Jeg har lige siddet og leget lidt med PHP Accelerator
(
http://php-accelerator.co.uk/) og vil gerne dele mine erfaringer med
jer... En af de mest positive ting var, at installationen er pærenem:
Librariet hentes i binær udgave, så det eneste, man behøver at gøre, er
at kopiere librariet ned i f.eks. /usr/local/lib og så tilføje følgende
linje til php.ini:
zend_extension = /usr/local/lib/php_accelerator_1.3.2.so
Derefter genstarter man serveren, og så kører det.
Den seneste version af PHP Accelerator er til PHP 4.2.1, men jeg har
ikke haft nogen problemer med at bruge det med PHP 4.2.2 på de to
servere, jeg testede det på (sandsynligvis fordi, PHP 4.2.1 og 4.2.2 er
rimelig ens bortset fra en rettelse af en sikkerhedsfejl).
Jeg testede først på min egen bærbare vha. ApacheBench (1000
forespørgsler, 50 ad gangen). Resultatet var, at PHP med PHP Accelerator
var godt tre gange hurtigere. Okay, godt nok. Jeg installerede så PHP
Accelerator på en server ude i byen og kørte samme test. Denne gang
kørte jeg det på et PHP-script, der lavede en del forespørgsler til
PostgreSQL, hvilket selvfølgelig vil sige, at forskellen på med og uden
accelerator bliver mindre, eftersom scriptet stadig skal udføre de samme
databaseforespørgsler. Alligevel var det skuffende at se, at båndbredden
åd stort set al forspring, PHP Accelerator havde (jeg sidder på en 384
Kbit/s-linje). Tidsmæssigt var der ikke den store forskel på testen med
PHP Accelerator og testen uden. Det viser ret tydeligt, at det altså er
båndbredden, ikke scriptfortolkningstiden, der er flaskehalsen. Okay,
det vidste I jo godt i forvejen, men det store spørgsmål er så, om det
overhovedet er værd at bruge acceleratorer a la PHP Accelerator?
For PHP Accelerator:
- Lidt højere hastighed - som dog alligevel ikke får den store betydning
for slutbrugeren - det er båndbredden, der er flaskehalsen.
- Lidt mindre resurseforbrug, omend der ikke er den store forskel.
Imod PHP Accelerator:
- Det giver en mere usikker opsætning: Det er om jeg så må sige endnu et
led i kæden, der kan briste, og hvis man skal have et stabilt
højtrafiksite er det et åbent spørgsmål, om det overhovedet er risikoen
værd. F.eks. er det et problem, at man sandsynligvis skal til at
udskifte PHP Accelerator hver gang, man opgraderer sin PHP. Glemmer man
at gøre det, risikerer man fejl.
Min egen anbefaling efter at have udført dette (indrømmet:
ufuldstændige) forsøg er, at man nok bør gå mere efter at løse
båndbreddeflaskehalsen end at gå efter kompilerede scripts a la PHP
Accelerator. Det, man kan gøre ved båndbreddeflaskehalsen, er f.eks. at
bruge mod_gzip (eller ob_start("ob_gzhandler") i sine PHP-scripts).
Hvis der er andre, der har erfaring med scriptkompileringsmekanismer a
la Zend Accelerator, APC eller lignende, vil jeg meget gerne høre om det.