Senokai naudoju eAccelerator ir esu labai patenkintas jo rezultatais.
Atėjo diena, kai vienam web’ui prireikė Zend Optimizer’io, nes jis užkoduotas su Zend Guard’u. Pagalvojau, kad jokių problemų neturėtų kilti – tiesiog sukišiu ZO ir viskas veiks (seniau yra tekę bandyti tai padaryti, deja, paaiškėjus, kad ZO tik viską labiau sulėtina teko atsisakyti ZO ir džiaugtis tik eA).
Taigi aš ramiai suinstaliuoju ZO iš FreeBSD port’ų ir pasileidžiu PHP CLI, kad pažiūrėčiau, ar viskas OK.. Va tada mano 3 minučių darbelis tapo geros valandos darbu:
PHP Fatal error: [Zend Optimizer] Zend Optimizer 3.2.0 is incompatible with eAccelerator
Pasirodo, naujoji ZO versija nebedraugauja su eA. Zend’o atstovai tai aiškina taip:
Zend Optimizer is not compatible with eAccelerator – both this extensions do operations on the PHP binary code and cannot co-exist.
Bet man tai atrodo keistai, nes seniau juk viskas veikė OK ir niekam niekas netrukdė. Greičiausiai tai kažkokios komercinės priežastys :)
Galimybės naudoti senesnę ZO versiją aš neturėjau, nes ji nepalaiko PHP 5.2, o ZO reikėjo tuoj pat, tad pradžiai tiesiog išmečiau eA. Vėliau nusprendžiau paeksperimentuoti su FastCGI ir pabandyti ZO naudoti tik tuose virtualiuosiuose serveriuose, kuriems yra ZO poreikis. Gan greitai tai pavyko :)
Truputėli paskaitinėjęs medžiagą internete perkompiliavau PHP su FastCGI palaikymu ir suinstaliavau mod_fcgid. Konfigūracija buvo gan paprasta.
Į bendrus serverio parametrus užteko įrašyt štai ką:
LoadModule fcgid_module libexec/apache22/mod_fcgid.so
<Directory /usr/hosting/new.autosara.com/www>
AddHandler fcgid-script .php
FCGIWrapper /usr/local/bin/php-fcgi .php
Options ExecCGI FollowSymLinks
allow from all
</Directory>
Taip pat teko sukurti /usr/local/bin/php-fcgi shell skriptą su tokiu turiniu:
#!/bin/sh
PHPRC=”/usr/local/etc/php/virtualusserveris”
export PHPRC
PHP_FCGI_CHILDREN=8
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php-cgi
Iš esmės skriptas buvo reikalingas tam, kad be vargo būtų galima priskirti aplinkos kintamuosius su man reikalingais parametrais. Atkreipkite dėmesį į PHPRC, kuris nurodo, kur ieškoti php.ini failo.
Rezultatas buvo tas, kad konkrečiam virtualiam serveriui galėjau nurodyti jam skirtą php.ini failą. Taigi bendras php.ini krauna eA modulį, o kitame php.ini faile yra kraunamas ZO modulis.