PHP skript kompileres hver gang en bruker etterspør en .php fil på en server. Selve filen som forespørres er sjelden spesielt krevende, men mange programmer bruker store biblioteker som må lastes inn i sin helhet. Dette er egentlig unødvendig, fordi koden sjelden endrer seg mellom sidevisninger, og man burde derfor beholde ferdig kompilerte programmer i minne.
itst.net har sammenlignet fem forskjeller pakker for akselerering av PHP. Kort fortalt kommer APC og Xcache best ut av det, men også eAccelerator kan nesten halvere responstiden og belastningen på serveren. Datagrunnlaget finner du her. Det som er overraskende er at det kommersielle produktet Zend Optimizer knapt nok gir noen bedre ytelse, mens ionCube (som riktignok er foreldet) gir dårligere ytelse enn uten.
Mange distribusjoner har ferdige pakker for APC, Xcache og/eller eAccelerator. Merk at disse pakkene må installeres av den som drifter serveren, det er altså ikke noe du kan få tatt i bruk dersom du leier plass på et webhotell.
Merk at man kan fortsatt øke ytelsen betraktelig ved å justere innstillingene. F.eks. står det ikke om eAccelerator sjekker mtime på alle filer ved hver visning, noe som kan bety svært mange spørringer til operativsystemet. I tillegg bør man selvfølgelig bruke noatime på filsystemet som inneholder cachen til akseleratorene. Videre må mengden med minne som settes av justeres, noe som kan være spesielt vanskelig på et webhotell, hvor man ikke har kontroll på koden.
olear 9. mars 2007 - 11:00
Har aldri hatt noe behov for slike pakker, men prøvde alikevell eAccelerator. I nesten alle benchmarks var serveren faktisk treigere med eAccelerator. Får teste XCache senere.
Testet mot Lighttpd+FastCGI+PHP+Joomla
ak 9. mars 2007 - 14:51
Med FastCGI kan det godt være treigere, for da må du jo laste inn eAccerelator og cache-filene i tillegg til PHP. Jeg bruker den som Apache modul, med 64 - 256 Mb Shared memory (SHM) for cache. Som sagt savner jeg innstillingene brukt i den testen, må kanskje kjøre min egen benchmark en vakker dag.
Jeg vet mange webhoster må bruke FastCGI for å adskille rettigheter, har brukt MPM-ITK til dette selv. http://home.samfundet.no/~sesse/mpm-itk/