OPcache Optimizare pornire PHP

De exemplu, pentru site-urile web bazate pe WordPress , Joomla sau Laravel și care nu au conținut specific utilizatorului, este recomandabil să păstrați toate paginile într-o memorie cache HTML statică și să regenerați memoria cache numai manual (sau automat) dacă există o modificare a backend-ului. Cu toate acestea, dacă pagina conține conținut dinamic care depinde de sesiuni și cookie-uri sau, de asemenea, de limbă și locație, OPcache este potrivit .


Așa-numitul timp de pornire pentru toate cele trei sisteme menționate este de peste 100 ms cu un server CentOS7 proaspăt instalat (cu SSD și PHP 7.1). De fiecare dată când un script PHP este executat, acesta trebuie să fie compilat în bytecode în timpul rulării. OPcache implementează acum un cache pentru acest bytecode - dacă același script PHP este executat cu următoarea cerere, nu trebuie să fie recompilat. După activarea OPcache, setăm următoarele setări:

9006cec6c5d3d2498ee26c5bfd91590a

Timpul de execuție (în medie peste 10 execuții) a fost acum redus semnificativ:

WordPress 4.7.4 Joomla 3.7 Laravel 5.4
fără OPcache 295 ms 201 ms 110 ms
cu OPcache 54 ms 59 ms 13 ms
Factor 5,5 3,5 8,5

Deoarece setăm validate_timestamps la 0 și în același timp revalidate_freq la o durată de o zi, memoria cache nu este aproape niciodată reconstruită automat (facem acest lucru în mod conștient manual). Cu un cârlig git mic, un script PHP este executat cu fiecare "pull". Cum se activează cârligul:

a1678610c8b4c7db5997375944183830

a1678610c8b4c7db5997375944183830

Următoarea funcție de ajutor este, de asemenea, utilă pentru măsurarea părților de cod individuale (sau a întregului timp de execuție):

085f4291bbcc4e8a64bbea951ff49ab9

Dacă doriți să obțineți informații utile, cum ar fi starea, memoria utilizată sau numărul de fișiere în cache, utilizați această funcție PHP:

3f6309d04bc7e48dd909859321b96209

Pentru a beneficia și de OPcache într-un mediu de dezvoltare locală (ceea ce în general nu este recomandat), folosim un truc.

OPcache este activ pe toate serverele care au instalat modulul OPcache și pe care setarea opcache.enable nu este setată în mod explicit. O lăsăm așa. Am setat opcache.validate_timestamps = 1 numai în php.ini. Aceasta înseamnă că opcache.revalidate_freq = 2. Aceasta înseamnă că OPcache este revalidat aproape continuu pentru fiecare proiect. Pentru acele proiecte în care dorim să activăm permanent OPcache, folosim proiecte în .htaccess următoarea setare:

1dd64a3f2fe4425b29b1409410fe3fc0

Apoi, repornim serverul web și creăm următorul script:

91fb5289160e410607c9ea89112a575b

Acest script șterge memoria cache și o reconstruiește în același timp. Acum setăm o comandă RunOnSave legată de spațiul de lucru în editorul nostru preferat VSCode:

91fb5289160e410607c9ea89112a575b

Înapoi