Udv!
Keszitettunk apache2/php5-hoz egy zend modult (c-ben), amely jelenleg windos alatt mukodik.
Viszont amikor portoltam a kodot linuxra, ott mar nem akart mukodni.
Windos alatt VC-vel egy dll-t forditunk, es azt loadolja be az apache/php.
A dll-ben hardver kezeles is van (sajat fejlesztesu kartya) ezert azt DeviceIoctl hivassal szolitjuk meg (ioctl linux alatt).
A problema ott van, hogy mig windos alatt a modul INIT fv-eben meghivjuk a CreateFilet, amivel megnyitjuk a kartyat (linux alatt fd = open("/dev/...",O_RDWR);)
addig a windosban visszaadott handler a visszateres utan is megmarad kesobbi php fuggvenyek hivasakor is, addig a linuxos modulban ervenyet veszti az open altal visszaadott file descriptor (vagyis minden php modulfv. hivasakor ujra meg kell nyitni, utana le kell zarni...)
Ezen kivul a modulban vannak standard C globalis valtozok is, amelyek szinten ertekuket vesztik ilyenkor, de windos alatt mukodnek...
Linux alatt shared libraryt forditottam, es a -DZTS (thread safe) kapcsolot is beallitottam ugy ahogy a windososban is van (ezzel sokat szivtam, mert az apt-getes php5-ben nincs beleforditva a ZTS ezert csak a php sourcebol valo forditasa utan sikerult a modult ZTS-el leforditani)
Talalkozott mar vki ilyesmivel, nekem nem sok jartassagom van a php/apache-val, meg a neten sem igazan talaltam ezzel kapcsolatban semmit.
Koszi,
Laca.
- 994 megtekintés