Acceleratoare PHP
Acceleratoare PHP, ele îmbunătățesc substanțial performanța software-ului bazat pe PHP, cum ar fi WordPress. Rularea site-urilor cu trafic mare alimentate de aplicații PHP este posibilă numai datorită acceleratoarelor PHP. Beneficiile lor de performanță variază foarte mult, deoarece depind de mai mulți factori, inclusiv de alte optimizări pe care poate fi necesar să le aplicați pe site-ul dvs.
În acest articol veți afla cum funcționează aceste acceleratoare PHP, de ce aveți nevoie de ele, care acceleratoare PHP sunt cele mai bune pentru site-ul dvs. WordPress și cum le puteți instala și configura.
Curios? Să începem!
Ce sunt Acceleratoarele PHP?
Un accelerator PHP este o extensie PHP care îmbunătățește performanța aplicațiilor PHP. Aceste extensii funcționează prin memorarea în cache a codului operațional (sau a codului operațional) generat de fișierele PHP. Din acest motiv, acceleratoarele PHP sunt denumite și Opcode Caching.
Scripturile PHP sunt scrise într-o sintaxă care poate fi citită de om, dar un server (sau o unitate centrală de procesare) nu poate înțelege acest cod direct. Trebuie convertit într-un format pe care serverul îl poate citi direct. Aici intervine Opcode.
Opcode face parte din instrucțiunile limbajului mașinii care direcționează serverul asupra operațiunilor care trebuie efectuate. În general, aceste instrucțiuni sunt destul de simple, cum ar fi adăugarea a două numere sau concatenarea a două sau mai multe șiruri. Alte părți ale instrucțiunilor limbajului includ operanzi, elemente pe care le manipulează opcode.
De fiecare dată când un utilizator solicită ceva pe site-ul dvs., generarea codului operațional din scripturi PHP poate fi foarte solicitantă pentru serverul dvs. web. În primul rând, scripturile trebuie să fie tokenizate și analizate pentru a genera un arbore de sintaxă abstractă (AST), care este apoi compilat pentru a crea opcode.
În unele cazuri extreme, acest proces poate duce site-ul dvs. la accesare cu crawlere pentru mulți utilizatori. Dacă numărul de solicitări este mare, atunci serverul expiră pentru o mulțime de utilizatori, împiedicându-i să acceseze complet site-ul web.
Puteți ocoli această problemă prin stocarea codului operațional în cache (OpCache) după ce este generat. Apoi îl puteți servi direct tuturor utilizatorilor următori fără a implica serverul. Este exact ceea ce face un accelerator PHP.
Nu este neobișnuit să vezi că un site WordPress se încarcă de două până la trei ori (sau chiar mai mult) mai rapid după instalarea și configurarea unui accelerator PHP.
Cele Mai Bune Acceleratoare PHP
PHP a fost lansat în 1995, făcându-l unul dintre cele mai vechi limbaje server-side care au supraviețuit până astăzi. De-a lungul vieții sale, au fost implementate o mulțime de acceleratoare (caching opcode), dar pentru setările de server care rulează pe Linux, există în primul rând o singură soluție bine întreținută și utilă: PHP OPcache.
Pentru aplicațiile PHP care rulează pe Windows și Windows Server, există un accelerator PHP alternativ numit Windows Cache Extension pentru PHP. În plus, există multe extensii pentru a adăuga caracteristici la memorarea în cache opcode încorporată a PHP. Le vom acoperi pe toate în acest articol.
PHP OPcache (Zend OPcache)
Extensia PHP OPcache face ca codul PHP să se execute mai rapid prin memorarea în cache a codului de operare și alte tehnici de optimizare. Este livrat împreună cu PHP 5.5 și versiunile ulterioare.
PHP OPcache se mai numește și Zend OPcache, deoarece este o implementare a extensiei de cache opcode a lui Zend. Zend a păstrat această extensie proprietară până la lansarea PHP 5.5. Prin urmare, pentru mulți utilizatori Alternative PHP Cache (APC) a fost soluția de bază pentru opcode cache în PHP.
După ce Zend a făcut public codul pentru stocarea în cache a codului operațional și l-a lansat ca extensie numită Zend OPcache, PHP 5.5 l-a făcut parte din nucleul său și de atunci îl folosește ca soluție implicită de stocare în cache a codului operațional.
PHP OPcache îmbunătățește performanța prin stocarea bytecode-ului precompilat în memoria partajată a serverului atunci când orice script PHP este executat pentru prima dată. Acest lucru elimină citirea și compilarea codului PHP pentru acces viitor. PHP OPcache aplică modele suplimentare de optimizare bytecode pentru a face execuția codului PHP mai rapidă.
APC User Cache (APCu)
Alternative PHP Cache (APC) este un accelerator PHP gratuit și open source. La fel ca Zend OPcache, este conceput în principal pentru a stoca în cache ieșirea opcode PHP în memoria partajată a serverului. Deoarece a fost întotdeauna FOSS, până acum câțiva ani a fost cea mai populară soluție de stocare în cache opcode pentru PHP.
După ce PHP OPcache a devenit parte a PHP 5.5, dezvoltarea APC a încetinit considerabil și este considerată moartă acum. Cu toate acestea, unele caracteristici APC nu sunt încă disponibile în PHP OPcache. Una dintre ele este funcționalitatea cache a memoriei partajate de userland. Se mai numește și „în memorie cache a datelor”.
Pentru a rezolva această problemă, dezvoltatorii APC l-au dezbrăcat de toate funcțiile de stocare în cache opcode și l-au lansat ca o extensie separată numită APCu. Acesta adaugă suport pentru memorarea în cache a variabilelor PHP.
De asemenea, puteți instala modulul de compatibilitate inversă APCu pentru a utiliza APCu ca înlocuitor pentru APC în versiunile moderne de PHP.
Veți afla mai târziu cum să activați și să configurați PHP OPcache și APCu pe serverul dvs.
Extensia Windows Cache pentru PHP
Windows Cache Extension pentru PHP este un accelerator PHP care accelerează software-ul PHP pe Windows și Windows Server. Nu include suport pentru opcode cache, deoarece PHP îl include deja în nucleul său, dar include 4 tipuri unice de cache:
- Cache de fișiere — PHP OPCache memorează în cache numai codul operațional generat de scripturile PHP. Motorul PHP mai trebuie să acceseze fișierele script de pe server. Efectuarea operațiunilor cu fișiere poate duce la o suprasarcină semnificativă de performanță, astfel încât această extensie include un cache de fișiere care poate stoca scripturi PHP în memoria partajată.
- Resolve File Path Cache — Majoritatea scripturilor PHP folosesc căi de fișiere relative pentru a se referi la fiecare fișier unic. Motorul PHP trebuie să le convertească în căi de fișiere absolute pentru a le accesa. Dacă există o mulțime de fișiere la care se face referire astfel, poate duce la probleme de performanță. Această extensie stochează în prealabil mapările tuturor căilor de fișiere relative și absolute, astfel încât motorul PHP să nu petreacă prea mult timp rezolvând căile fișierelor.
- Cache-ul utilizatorului – Acest cache funcționează în mod similar cache-ului de memorie partajat al utilizatorului APCu. Scripturile PHP pot folosi API-urile cache a utilizatorului pentru a stoca obiecte și variabile în memoria cache a utilizatorului și pentru a le reutiliza la solicitările ulterioare. Nu numai că îmbunătățește performanța scripturilor PHP, dar permite și motorului PHP să partajeze date prin mai multe procese PHP.
- Session Handler — Acesta stochează datele sesiunii PHP în memoria partajată a serverului pentru a evita efectuarea operațiunilor sistemului de fișiere pentru citirea și scrierea datelor de sesiune. Este util dacă o cantitate enormă de date este generată într-o singură sesiune PHP.
Majoritatea instalărilor WordPress folosesc un server Linux. În cazul în care sunteți unul dintre cei zece utilizatori care utilizează un server Windows pentru a vă rula site-ul, puteți afla mai multe despre instalarea și configurarea WinCache din manualul său online.
Instalarea și Configurarea PHP OPcache
Pentru PHP 5.5 și versiuni ulterioare, PHP compilează implicit OPcache ca extensie partajată în timpul instalării PHP. Cu toate acestea, dacă ați specificat directiva –disable-all când instalați PHP, atunci trebuie să permiteți OPcache în mod explicit specificând directiva –enable-opcache.
Odată ce ați compilat extensia OPcache, trebuie să o activați și să îi configurați variabilele.
Trebuie să utilizați directiva zend_extension pentru a activa extensia OPcache. Pentru a face acest lucru, adăugați următorul cod în fișierul dvs. php.ini.
zend_extension=/full/path/to/opcache.so
După ce ați activat OPcache, trebuie să aplicați setările potrivite pentru a obține performanță maximă. Pentru majoritatea cazurilor de utilizare, puteți adăuga următoarele setări în fișierul dvs. php.ini:
opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
Iată o detaliere a tuturor directivelor și a ceea ce fac acestea:
- memory_consumption: Setează dimensiunea memoriei partajate disponibilă pentru OPcache. Valoarea este specificată în mega-octeți, iar valoarea sa implicită pentru PHP 7.0 și mai sus este 128, dar puteți seta mai mult decât atât dacă este necesar.
- interned_strings_buffer: Specifică cantitatea de memorie disponibilă pentru stocarea șirurilor interne. Internarea șirurilor este o metodă de optimizare a performanței în care doar o copie a fiecărui șir distinct este stocată în memorie, ceea ce face ca sarcinile de procesare a șirurilor să fie eficiente din punct de vedere al spațiului și al timpului.
- max_accelerated_files: Definește numărul maxim de scripturi PHP care pot fi stocate în tabelul hash OPcache. Valoarea sa minimă este 200, dar o puteți seta până la 1000000 în PHP 5.5.6 și versiunile ulterioare. Trebuie să rețineți că valoarea reală utilizată de OPcache va fi primul număr prim care este cel mai apropiat de valoare și nu de valoarea în sine.
find . -type f -print | grep php | wc -l
- revalidate_freq: direcționează OPcache cât de des trebuie să verifice marcajele de timp ale scriptului pentru orice actualizări. Valoarea acestuia este setată în secunde. Dacă îl setați la 0, OPcache va verifica dacă există actualizări pentru fiecare solicitare, ceea ce este echivalent cu a nu avea nicio opțiune activată.
- fast_shutdown: Activează secvența de închidere rapidă pentru OPcache. Acesta accelerează timpul de răspuns și de reciclare al lucrătorilor PHP, astfel încât aceștia să fie gata pentru solicitări suplimentare imediat. OPcache realizează acest lucru utilizând managerul de memorie Zend Engine pentru a anula atribuirea tuturor solicitărilor dintr-o singură mișcare.
- enable_cli: Activează opcode cache pentru versiunea CLI a PHP. Setarea la 1 va activa opcode cache pe serverul dvs. Puteți dezactiva stocarea în cache a codurilor operaționale pentru dezvoltare și testare setându-l la 0.
Verificarea Stării PHP OPcache
Puteți verifica starea OPcache pe serverul dumneavoastră rulând funcția opcache_get_status().
Dacă OPCache este activat pe serverul dvs., va returna o matrice care conține toate proprietățile de stocare în cache opcode. Iată un exemplu de rezultat al acestei funcții. Dacă OPcache este dezactivat pe serverul dvs., atunci va returna doar false.
Puteți conecta parametrul opțional get_scripts la această funcție pentru a obține informații despre starea scriptului. Alternativ, puteți utiliza și funcția opcache_get_configuration() pentru a obține informații de configurare OPcache, inclusiv INI, lista neagră și versiunea OPcache în uz.
Pentru o listă detaliată a tuturor funcțiilor OPcache, puteți consulta manualul funcțiilor PHP OPcache.
Monitorizarea și Gestionarea PHP OPcache
Există o mulțime de extensii PHP care vă permit să gestionați cu ușurință funcțiile OPcache printr-o interfață grafică. Două dintre cele mai recomandate extensii în acest scop sunt OpCacheGUI și opcache-gui (nume similare, dar extensii diferite).
În timp ce OpCacheGUI este extensia care arată cel mai bine dintre cele două, extensia opcache-gui este actualizată în mod regulat pentru a funcționa cu cele mai recente versiuni PHP. Puteți folosi oricare dintre ele pentru a gestiona și monitoriza cu ușurință PHP OPcache.
Instalarea și Configurarea APCu
Puteți instala extensia APCu din depozitul PECL sau direct din PHP. Rulați următoarea comandă în terminal pentru a începe:
sudo apt-get install php7.3-apcu
În timpul instalării, este posibil să întâlniți întrebări despre cum să configurați APCu pe serverul dvs. Alegeți setările implicite pentru toate.
Apoi, verificați fișierul php.ini și adăugați linia de mai jos dacă nu a fost deja adăugată de PHP.
extension=apcu.so
Acest lucru va activa modulul apc.so pe serverul dvs. după ce va fi repornit. Pentru serverele care rulează pe NGINX, trebuie să utilizați următoarea comandă:
sudo service php7.3-fpm restart sudo service nginx reload
Dacă serverul tău folosește Apache, atunci poți folosi următoarea comandă:
sudo service apache2 reload
Setările implicite APCu sunt perfecte pentru majoritatea setărilor, inclusiv pentru instalațiile WordPress. Cu toate acestea, dacă vă gândiți să le reglați fin, atunci puteți citi toate opțiunile de configurare APCu disponibile.
De exemplu, directiva apcu.shm_size este setată implicit la 32M. Dacă descoperiți că APCu epuizează spațiul alocat în memoria partajată, atunci puteți aloca mai mult spațiu pentru APCu adăugând directiva apcu.shm_size cu o valoare personalizată în valoarea dvs. php.ini.
Ștergeți OpCache-ul cu WP Rocket
Când ați schimbat codul PHP sau ați adăugat scripturi noi, poate fi necesar să ștergeți memoria cache a codului operațional de pe site-ul dvs. web. În timp ce puteți face acest lucru prin intermediul terminalului, WP Rocket are o opțiune încorporată pentru a face acest lucru cu un singur clic de buton.
Pentru a face acest lucru, accesați Setări > WP Rocket în tabloul de bord WordPress și faceți clic pe butonul PURGE OPCACHE.
Dacă nu aveți această opțiune disponibilă în panoul de setări WP Rocket, atunci fie serverul dvs. nu a fost configurat să utilizeze OPcache, fie gazda a dezactivat ștergerea OPcache prin API adăugând directiva opcache.restrict_api în fișierul php.ini. Puteți citi mai multe despre această caracteristică în documentația WP Rocket.
Concluzie
Funcționalitatea implicită OPcache a PHP oferă o îmbunătățire vizibilă a performanței site-urilor WordPress. De cele mai multe ori, câștigurile de viteză sunt de până la 3 ori mai mari. Dacă aveți un site cu trafic mediu spre mare, atunci este foarte recomandat să activați opcode cache pe serverul dvs.
În ceea ce privește cele mai bune acceleratoare PHP, există doar unul care funcționează impecabil pentru stocarea în cache astăzi și acesta este OPcache-ul încorporat în PHP. De asemenea, puteți instala extensia APCu PHP pentru a profita de funcționalitatea de memorare a memoriei partajate a utilizatorilor.
Sper că acest articol a răspuns la toate întrebările dumneavoastră referitoare la aceste acceleratoare PHP. Începeți să vă accelerați site-ul acum!