Memorarea în cache apc. APC în PHP: Concept, instalare, utilizare APC. Instalarea APC pe CentOS, RHEL, Fedora

9 aprilie 2015 ora 12:12 1.889 de vizualizări | fara comentarii

Ce este APC?

APC este un sistem de stocare în cache a codului PHP care vă permite să vă accelerați site-ul. PHP este un limbaj de scriptare dinamic pe partea de server care trebuie analizat, compilat și executat pe server de fiecare dată când este solicitată o pagină. Cu toate acestea, în multe cazuri, solicitările sunt repetate și, prin urmare, serverul cloud trebuie să reproceseze fiecare dintre ele.

În acest caz, APC, sau Alternative PHP Cache, vine în ajutor. Acest instrument stochează codul PHP în memoria de operare și îl recuperează atunci când este necesar. În esență, ocolește procesarea și compilarea codului, minimizând încărcarea pe server.

Acest ghid va demonstra instalarea și configurarea APC.

Notă: Pentru a finaliza ghidul, trebuie mai întâi să aveți privilegii de root, precum și .

Instalarea APC

Înainte de a instala memoria cache APC, trebuie să instalați unele dintre dependențele acestuia. Pentru a face acest lucru, utilizați următoarea comandă:

sudo apt-get install php-pear php5-dev make libpcre3-dev

Apoi puteți instala APC folosind comanda pecl:

sudo pecl install apc

Pentru a finaliza instalarea, trebuie să editați fișierul php.ini:

adăugând următorul rând la sfârșit:

extensie=apc.so

Salvați și închideți fișierul, apoi reporniți Apache:

sudo service apache2 reporniți

Pentru a afla dacă APC este activat, deschideți pagina de informații PHP. Dacă nu există niciunul, creați un fișier php gol în folderul /var/www:

nano /var/www/info.php

Și adăugați acest cod în el:

phpinfo();
?>

Salvați și închideți fișierul, apoi deschideți browserul. Toate informațiile despre instalarea PHP curentă vor apărea pe ecran. Dacă APC este activat, pagina va indica acest lucru. În general, nu este recomandat să lăsați acest fișier, deoarece poate oferi acces la date sensibile utilizatorilor neautorizați. Scoateți-l după verificare.

Configurarea APC

După instalare, memoria cache APC începe cu setările implicite. Există două setări foarte importante în configurațiile sale. Deci, deschideți fișierul php.ini:

sudo nano /etc/php5/apache2/php.ini

Sub linia adăugată anterior care include APC, adăugați următoarea linie:

apc.shm_size = 64

Aceasta va aloca 64 MB de RAM pentru memorarea în cache APC. În funcție de cerințele sau limitările serverului privat virtual, această valoare poate varia.

Mai jos trebuie să adăugați încă o linie:

Setarea apc.stat verifică scriptul la fiecare solicitare de verificare a modificărilor. Dacă a fost schimbat, îl va recompila și va stoca în cache noua versiune. Acesta este comportamentul standard APC. O valoare de 0 pe această linie va spune APC să nu verifice scriptul pentru modificări. Acest lucru îmbunătățește performanța, dar există un dezavantaj: dacă există modificări în scriptul PHP, acestea nu vor fi făcute până când serverul cloud este repornit. Prin urmare, setarea valorii la 0 este recomandată numai pe site-urile care sunt în producție.

Acum că memoria cache APC este instalată și rulează, îi puteți verifica starea și performanța. Găsiți fișierul apc.php în folderul /usr/share/php/ și mutați-l într-un folder accesibil de browser - de exemplu, www.

Comportamentul acestor funcții depinde de setările din php.ini.

Deși setările implicite APC sunt potrivite pentru majoritatea instalărilor, unele aplicații pot necesita mai multă reglare fină.

Când configurați APC, există două puncte principale la care să acordați atenție. Primul este cât de multă memorie trebuie pusă la dispoziție pentru APC, iar al doilea este dacă APC-ul va verifica dacă fișierul a fost modificat la fiecare solicitare. Aceste setări sunt controlate de parametri apc.shm_sizeȘi apc.stat, respectiv. Vă rugăm să citiți cu atenție secțiunile legate de setarea acestor parametri.

Odată ce serverul este pornit, scriptul apc.php, furnizat cu această extensie, trebuie copiat în „docroot” și drepturile asupra acestuia trebuie să permită lansarea acestuia prin browser. Acest script oferă informații detaliate despre cum funcționează APC. Dacă GD este activat în PHP, atunci acest script va afișa și grafice utile. Desigur, primul lucru care va fi interesant este dacă APC memorează ceva în cache. Dacă APC rulează, atunci valoarea Număr complet în cache(stânga) va arăta de câte ori memoria cache a devenit complet plină și a fost forțată să elimine forțat intrările care nu au fost accesate ultima dată apc.ttl secunde Cu cât acest număr este mai mic, cu atât memoria cache este mai bine configurată. Dacă acest număr crește constant, atunci APC trebuie să curețe în mod constant intrările vechi și se pierde întregul punct de stocare în cache. Cel mai bun mod de a reduce acest număr este să adăugați memorie la APC. Dacă acest lucru nu se poate face, atunci trebuie să reconfigurați apc.filtre pentru a limita setul de scripturi din cache.

Dacă APC-ul este construit cu suport mmap (Memory Mapping), acesta va folosi un singur segment de memorie; dacă, dimpotrivă, APC-ul este construit cu suport SHM (SysV Shared Memory), va folosi mai multe segmente. MMAP nu are limită maximă, spre deosebire de SHM care este limitat /proc/sys/kernel/shmmax. În general, este recomandat să utilizați MMAP deoarece alocă mult mai rapid memoria atunci când serverul web este repornit, ceea ce afectează viteza de pornire a serverului.

Parametrii de configurare APC
Nume Mod implicit Locația schimbării Lista modificărilor
apc.activat "1" PHP_INI_SYSTEM PHP_INI_SYSTEM în APC 2. PHP_INI_ALL în APC<= 3.0.12.
apc.shm_segments "1" PHP_INI_SYSTEM
apc.shm_size "32M" PHP_INI_SYSTEM
apc.shm_strings_buffer "4M" PHP_INI_SYSTEM Disponibil cu APC 3.1.4.
apc.optimizare "0" PHP_INI_ALL PHP_INI_SYSTEM în APC 2. Eliminat în APC 3.0.13.
apc.num_files_hint "1000" PHP_INI_SYSTEM
apc.user_entries_hint "4096" PHP_INI_SYSTEM Disponibil cu APC 3.0.0.
apc.ttl "0" PHP_INI_SYSTEM Disponibil cu APC 3.0.0.
apc.user_ttl "0" PHP_INI_SYSTEM Disponibil cu APC 3.0.0.
apc.gc_ttl "3600" PHP_INI_SYSTEM
apc.cache_by_default "1" PHP_INI_ALL PHP_INI_SYSTEM în APC<= 3.0.12. Доступно с APC 3.0.0.
apc.filtre NUL PHP_INI_SYSTEM
apc.mmap_file_mask NUL PHP_INI_SYSTEM
apc.slam_defense "1" PHP_INI_SYSTEM Disponibil cu APC 3.0.0. Înainte de APC 3.1.4, valoarea implicită "0" (dezactivat).
apc.file_update_protection "2" PHP_INI_SYSTEM Disponibil cu APC 3.0.6.
apc.enable_cli "0" PHP_INI_SYSTEM Disponibil cu APC 3.0.7.
apc.max_file_size "1M" PHP_INI_SYSTEM Disponibil cu APC 3.0.7.
apc.use_request_time "1" PHP_INI_ALL Disponibil cu APC 3.1.3.
apc.stat "1" PHP_INI_SYSTEM Disponibil cu APC 3.0.10.
apc.write_lock "1" PHP_INI_SYSTEM Disponibil cu APC 3.0.11.
apc.report_autofilter "0" PHP_INI_SYSTEM Disponibil cu APC 3.0.11.
apc.serializator "Mod implicit" PHP_INI_SYSTEM Disponibil cu APC 3.1.0.
apc.include_once_override "0" PHP_INI_SYSTEM Disponibil cu APC 3.0.12.
apc.rfc1867 "0" PHP_INI_SYSTEM Disponibil cu APC 3.0.13.
apc.rfc1867_prefix „încărcare_” PHP_INI_SYSTEM
apc.rfc1867_name „APC_UPLOAD_PROGRESS” PHP_INI_SYSTEM
apc.rfc1867_freq "0" PHP_INI_SYSTEM
apc.rfc1867_ttl "3600" PHP_INI_SYSTEM Disponibil cu APC 3.1.1.
apc.localcache "0" PHP_INI_SYSTEM
apc.localcache.size "512" PHP_INI_SYSTEM Disponibil în APC 3.0.14 - 3.1.11.
apc.coredump_unmap "0" PHP_INI_SYSTEM Disponibil cu APC 3.0.16.
apc.stat_ctime "0" PHP_INI_SYSTEM Disponibil cu APC 3.0.13.
apc.preload_path NUL PHP_INI_SYSTEM Disponibil cu APC 3.1.1.
apc.file_md5 "0" PHP_INI_SYSTEM Disponibil cu APC 3.1.1.
apc.canonicize "1" PHP_INI_SYSTEM Disponibil cu APC 3.1.1.
apc.lazy_functions 0 PHP_INI_SYSTEM Disponibil cu APC 3.1.3.
apc.lazy_classes 0 PHP_INI_SYSTEM Disponibil cu APC 3.1.3.
Pentru o descriere detaliată a constantelor PHP_INI_*, consultați secțiunea Unde pot fi setate opțiunile de configurare.

O scurtă explicație a directivelor de configurare.

Daca instalezi apc.activat setat la 0, APC nu va fi activat. Acest lucru este util atunci când APC este activat static în PHP și nu există alte opțiuni pentru a dezactiva utilizarea acestuia. Dacă APC este construit ca DSO, puteți pur și simplu să comentați linia extensie V php.ini.

Apc.shm_segments întreg

Numărul de segmente de memorie partajată alocate pentru cache. Dacă APC a folosit toată memoria partajată disponibilă și apc.shm_size oricât de mare permite sistemul, creșterea acestui parametru poate ajuta.

Apc.shm_size şir

Mărimea unui segment de memorie partajată, specificată în notație scurtă (consultați această Întrebări frecvente). În mod implicit, unele sisteme (inclusiv majoritatea variantelor BSD) limitează această valoare la o valoare extrem de mică.

Apc.shm_strings_buffer şir

Cantitatea de memorie alocată cache-ului de șiruri partajat utilizat de procesele interne APC. Mărimea trebuie să se termine cu sufixul M sau G pentru a indica megaocteți și, respectiv, gigaocteți. Folosirea acestei opțiuni poate reduce amprenta de memorie a proceselor de lucru PHP-FPM, deoarece aceleași șiruri de caractere vor fi stocate în memorie o singură dată și pot fi folosite de toate procesele de lucru.

Optimizare apc întreg

Nivel de optimizare. Zero dezactivează optimizarea. Cu cât această valoare este mai mare, cu atât va fi utilizată optimizarea mai agresivă. Nu vă așteptați la o creștere mare a vitezei. Aceasta este o funcționalitate experimentală.

Apc.num_files_hint întreg

Un indiciu despre numărul de fișiere unice utilizate pe site-ul dvs. Setează-l la zero sau nu-l specifica deloc dacă nu ești sigur. Această setare este utilă atunci când aveți multe mii de fișiere.

Apc.user_entries_hint întreg apc.file_update_protection întreg

Când un fișier se schimbă din mers, ar trebui să se întâmple într-o manieră atomică. Adică, mai întâi trebuie scris într-un fișier temporar și apoi mutat ( mv) la poziția sa țintă. Mulți editori de text cp, gudron iar alții nu fac asta. Acest lucru poate duce la solicitarea fișierului (și stocarea în cache) în timp ce este scris. Setări apc.file_update_protection setează întârzierea de cache pentru fișiere complet noi. Implicit este 2 secunde. Aceasta înseamnă că, dacă marcajul de timp al modificării fișierului ( mtime) spune că dacă au trecut mai puțin de 2 secunde de la modificarea fișierului, acesta nu va fi stocat în cache. Nefericitul care încearcă să acceseze fișierul pe jumătate salvat va experimenta un comportament ciudat, dar cel puțin nu va dura mult. Dacă toate fișierele serverului web sunt actualizate atomic, folosind metode precum rsync(care se actualizează corect), atunci acest comportament poate fi dezactivat prin setarea acestui parametru la zero. Dacă sistemul este supraîncărcat I/O, unele actualizări pot dura mai mult de două secunde și această setare ar trebui mărită corespunzător.

Apc.enable_cli întreg

Mai multe pentru testare și depanare. Această setare permite APC pentru versiunea CLI a PHP. În munca normală, rularea APC, care va crea, umple și distruge memoria cache de fiecare dată când rulați un script în consolă, nu va fi cea mai bună idee. Dar în scopuri de testare și depanare, puteți activa cu ușurință APC pentru CLI.

Apc.max_file_size întreg

Nu memorează în cache fișierele mai mari decât dimensiunea specificată de această setare. Implicit este 1M.

Apc.stat întreg

Aveți grijă când schimbați această setare. Acest lucru este activat în mod implicit, determinând APC să verifice fișierele script la fiecare solicitare pentru a vedea dacă au fost modificate. Dacă au fost modificate, vor fi recompilate și stocate din nou în cache. Dacă dezactivați această setare, atunci APC nu va efectua o astfel de verificare, iar dacă fișierul a fost deja memorat în cache și apoi schimbat, atunci noua versiune nu va intra în cache. Recachingul va necesita repornirea serverului web. Vă rugăm să rețineți că este posibil ca serverele web configurate să utilizeze FastCGI să nu golească memoria cache la repornire. În mediile industriale în care modificările fișierelor apar foarte rar, dezactivarea acestei opțiuni poate îmbunătăți semnificativ performanța.

Pentru fișierele încărcate prin inclus/necesar, această opțiune funcționează excelent, dar rețineți că, dacă includeți un fișier într-o cale relativă (pe Unix, orice cale care nu începe cu /), APC va verifica unicitatea. Dacă sunt folosite căi absolute, APC va sări peste această verificare și va folosi calea absolută ca identificator unic de fișier.

Apc.write_lock boolean

Pe serverele foarte încărcate, când serverul pornește sau când mai multe fișiere sunt modificate în același timp, APC poate încerca să compileze și să memoreze în cache același fișier de mai multe ori în același timp. Blocarea scrierea asigură că un singur proces va încerca să compileze și să memoreze în cache un fișier necache. Alte procese care trebuie să utilizeze acest fișier vor folosi versiunea necache a acestuia, în loc să aștepte să apară în cache.

Apc.report_autofilter boolean

Înregistrează toate scripturile care au fost excluse din stocarea în cache din cauza unor probleme de conectare timpurii sau tardive.

Apc.serializator şir

Spune APC să folosească un serializator terță parte.

Apc.include_once_override boolean

Optimizează apelurile include_o datăȘi cere_o dată pentru a preveni apelurile costisitoare de sistem.

Atenţie

Această funcționalitate este EXPERIMENTAL. Comportamentul acestei directive, numele și documentația acesteia se pot schimba fără notificare în versiunile viitoare ale APC. Folosiți-l pe propriul risc.

Apc.rfc1867 boolean

Interceptorul de progres pentru descărcarea fișierului RFC1867 este disponibil numai în APC dacă este construit cu PHP 5.2.0 sau o versiune ulterioară. Dacă este permis, atunci orice fișier încărcat pe server care conține în formular, înainte de câmpul fișier, un câmp cu numele APC_UPLOAD_PROGRESS, va forța APC să creeze automat o intrare în cache personalizată, cum ar fi upload_ cheie, Unde cheie este valoarea câmpului APC_UPLOAD_PROGRESS.

Amintiți-vă că câmpul ascuns APC_UPLOAD_PROGRESS trebuie să mergi pe câmpul cu dosarul, altfel lucrarea va fi incorectă.

Vă rugăm să rețineți că urmărirea descărcarii fișierelor nu este sigură pentru fire, așa că dacă în timpul primei descărcări există unul nou cu aceeași cheie, urmărirea primei va fi oprită.

Rețineți că rată va fi disponibil numai când toate descărcările curente s-au finalizat.

Exemplul #1 Exemplu de utilizare a apc.rfc1867

print_r (apc_fetch ( "upload_ $_POST [ APC_UPLOAD_PROGRESS ] " ));
?>

Rezultatul rulării acestui exemplu va fi cam așa:

Array ( => 1142543 => 1142543 => 1828068.8 => test => fisier => /tmp/php8F => 0 => 1)

Apc.rfc1867_prefix şir

Prefixul cheii de utilizat în intrarea în memoria cache a utilizatorului creată de funcționalitatea de urmărire a progresului descărcării rfc1867.

Apc.rfc1867_name şir

Specifică un nume pentru un câmp de formular ascuns care va activa procesul de descărcare APC și va specifica sufixul cheii cache a utilizatorului.

Apc.rfc1867_freq şir

Frecvența la care intrarea în memoria cache a utilizatorului va fi actualizată în timpul descărcării fișierului. Poate fi specificat fie ca procent, fie indicând dimensiunea în octeți. Puteți folosi sufixe dacă doriți "k", "m"Și "g"(insensibil la majuscule și minuscule) pentru kilobytes, megabytes și, respectiv, gigabytes. Dacă specificați zero, actualizările vor avea loc cât mai repede posibil, dar acest lucru poate încetini timpul de încărcare.

Apc.rfc1867_ttl întreg

TTL pentru înregistrările rfc1867.

Apc.localcache boolean

Activează cache-urile umbră ale proceselor locale neblocante, ceea ce reduce cantitatea de blocare în timpul scrierilor în cache.

Apc.localcache.size întreg

Dimensiunea cache-ului umbră a procesului local ar trebui să fie destul de mare, aproximativ jumătate din apc.num_files_hint .

Apc.coredump_unmap boolean

Permite APC să intercepteze semnale precum SIGSEGV, care scrie un coredump atunci când este emis. Când aceste semnale sunt primite, APC va încerca să elibereze toată memoria partajată pentru a nu o include în coredump. Această setare poate crește stabilitatea sistemului atunci când a fost primit un semnal critic și APC-ul este configurat să utilizeze o cantitate mare de memorie.

Atenţie

Această caracteristică este potențial periculoasă. Eliberarea segmentelor de memorie partajată atunci când este primit un semnal critic poate duce la un comportament imprevizibil.

cometariu:

Deși unele nuclee oferă posibilitatea de a ignora unele segmente de memorie partajată atunci când scrieți un fișier de bază, aceste implementări pot ignora și segmente importante de memorie, cum ar fi tabloul de bord Apache.

apc.stat_ctime întreg

Verificați de ctime pentru a evita problemele cauzate de programe precum svn sau rsync, asigurându-vă că inodul nu s-a schimbat de la ultima dată când au fost colectate statistici. De obicei, APC verifică doar mtime.

Apc.canonicize bool

Dacă este dezactivată, căile relative sunt convertite în canonice în modul fără statistică. Dacă este activată, fișierele conectate prin stream wrapper-ul nu vor fi stocate în cache, deoarece realpath() nu acceptă stream wrappers.

Apc.preload_path şir

Opțional. Specifică calea pe care APC o folosește pentru a încărca datele din cache în timpul pornirii.

Apc.use_request_time bool

Utilizați ora de începere a solicitării SAPI pentru TTL.

Apc.file_md5 bool

Scrieți hash-uri md5 de fișiere.

Apc.lazy_functions întreg

Permite încărcarea leneșă a funcțiilor.

Apc.lazy_classes întreg

Permite încărcarea leneșă a cursurilor.

APC este o abreviere pentru Caching PHP alternativ. Textul rusesc este un cacher PHP alternativ. Pentru ce este folosit? La fel ca alte cachere populare, cum ar fi XCache și eAccelerator, este folosit pentru a crește viteza scripturilor PHP. Dacă aveți propriul server și sunteți îngrijorat de performanța scripturilor PHP, atunci APC poate fi soluția pentru problema dvs. În articolul de astăzi vom afla mai multe despre APC, vom afla cum să-l instalăm și să-l testăm și vom folosi memorarea în cache APC atunci când scriem scripturi PHP.

Astăzi vom afla

Ce este acceleratorul APC?

AcceleratorAPC(Alternative PHP Cache) este un opcode cacher gratuit și deschis pentru PHP. A fost conceput pentru a fi un cadru gratuit, deschis și stabil pentru stocarea în cache și optimizarea codului sursă PHP. APC este în stadiul de dezvoltare. În prezent, acceptă PHP 4 și PHP 5, inclusiv 5.3. Probabil că va fi inclus în versiunea standard de bază PHP 6.

Cum se atinge viteza de lucru?PHP?

Când există o întârziere în încărcarea site-ului dvs., apare întrebarea - De ce? Faptul este că atunci când se efectuează un apel standard la un script PHP, acesta este compilat din nou de fiecare dată. Adică aceeași muncă se face de mai multe ori. Dacă este un proiect mic, încetinirile pot fi minore, chiar invizibile. Dar daca ai un proiect (website) mare, atunci ai observat ca atunci cand accesezi apare o intarziere in incarcarea paginii, in ciuda faptului ca site-ul este bine optimizat in ceea ce priveste si . Pentru claritate, să vedem cum este executată o solicitare standard fără a utiliza acceleratoarele PHP:

În același timp, execuțiile sunt în curs compilarea codului la fiecare cerere. Procesarea cererii necesită mult timp și, prin urmare, încetinește. Pentru a ocoli acest lucru, au fost inventate acceleratoare, dintre care APC este reprezentant. Ei memorează în cache codul compilat pe disc, care, atunci când este accesat, tipărește rezultatul. Acest lucru crește viteza PHP. APC poate funcționa în două moduri, care sunt configurate în fișier /etc/php.d/apc.ini, variabil apc.stat. Variabila poate lua valori 1 și 0 (apc.stat=0 sau apc.stat=1). Când utilizați modul apc.stat=1, scripturile funcționează oarecum mai lent, deoarece verifică modificarea fișierului, dar acest lucru evită problemele atunci când codul este schimbat, dar rezultatul rămâne același. Prin urmare, vă sfătuiesc să setați valoarea variabilei la 1.

După instalarea acceleratorului APC, schema de execuție a cererii va fi următoarea:

Instalarea APC

APC este foarte ușor de instalat. Poate fi instalat atât pe Debian/Ubuntu, cât și pe alte distribuții.

Instalarea APC pe CentOS, RHEL, Fedora:

Vom instala prin PECL. Mai întâi conectăm .repo, care conține APC-ul curent. Vezi exemplul de mai jos:

wget http://rpm.scwlab.com/el/php/yum.conf -O /etc/yum.repos.d/stalwart.repo

yum instalează php-pecl-apc

Acum, modificați setările fișierului /etc/php.d/apc.ini după gust și reporniți serverul.

Instalarea APC pe Debian, Ubuntu

apt-get install apache2-threaded-dev php5-dev php5-pear make gcc g++

pecl install apc

După descărcare, deschideți fișierul la /etc/php5/apache2/php.ini, adăugați parametrul extensie=apc.soși reporniți serverul.

După cum puteți vedea, instalarea APC pe Debian sau Ubuntu este destul de simplă, trebuie doar să tastați comanda în consolă sudo aptitude instalează php-apc. De asemenea, puteți instala această extensie prin sinaptice. Dacă aveți o distribuție diferită, puteți instala pachetul APC de la PECL. Pentru a face acest lucru, executați următoarea comandă în consolă sudo pecl install apc.

Se verifică disponibilitatea pachetuluiAPC

Dacă în fișierul de setări php.ini există o linie de descărcare a pachetului extensie=apc.so. Sau un fișier apc.ini cu o linie identică a fost creat în folderul de configurare a extensiilor PHP. Fiecare distribuție are propria sa adresă. Pentru Debian, acesta este /etc/php5/apache2/conf.d/.

Dacă ați verificat și sunteți sigur că totul este în regulă, reporniți serverul. Acum să verificăm informațiile despre pachetul APC în sine. Pentru a face acest lucru, găsiți folderul în care a fost instalată extensia. În folder veți găsi un fișier numit apc.php. Acest fișier este prezent și în arhiva de instalare. Copiați-l în orice director de pe site-urile dvs. server..php. Dacă pachetul a fost instalat cu succes, atunci când descărcați acest fișier, veți vedea următorul tabel de informații despre pachetul APC curent.



Folosind APC în PHP

Utilizarea extensiei APC atunci când scrieți cod PHP este foarte simplă și convenabilă. Acum poți vedea asta pentru tine.

Pentru început, vom scrie o clasă pentru a lucra cu memoria prin sistemul de cache APC. Creați un fișier și plasați codul acolo la următoarea adresă:

classes/apc.caching.php

bEnabled = extensie_loaded("apc"); ) // obțineți date din funcția de memorie getData($sKey) ( $bRes = false; $vData = apc_fetch($sKey, $bRes); return ($bRes) ? $vData:null; ) // salvați datele în funcția de memorie setData($sKey, $vData) ( return apc_store($sKey, $vData, $this->iTtl); ) // șterge datele din funcția de memorie delData($sKey) ( $bRes = false; apc_fetch($sKey, $ bRes); return ($bRes) ? apc_delete($sKey): true; ) ) ?>

Clasa descrie ceea ce face fiecare funcție. Acum să creăm un fișier de test.

index.php

"tabel", "culoare" => "maro", "dimensiune" => matrice ("x" => 200, "y" => 120, "z" => 150,), "putere" => 10, ); require_once("classes/apc.caching.php"); $oCache = nou CacheAPC(); echo „Date:

"; // Să vedem ce avem print_r($aData); echo "
"; dacă ($oCache->bEnabled) ( // Dacă APC este disponibil $oCache->setData("my_object", $aData); // Stochează datele în memorie $oCache->setData("our_class_object", $oCache) ; // Salvați obiectul clasei în memorie echo „În teorie, am salvat datele în memorie, faceți clic aici pentru a verifica dacă totul este într-adevăr acolo.”; ) else ( echo „Pachetul APC nu este instalat, instalați-l și apoi testați ea!"; ) ?>

În acest fișier am salvat 2 obiecte în memorie: o matrice și un obiect de clasă. Acum să creăm un al doilea fișier.

index2.php

bEnabled) ( // Dacă APC este disponibil $aMemData = $oCache->getData("my_object"); // Obțineți date din memorie $aMemData2 = $oCache->getData("our_class_object"); // obțineți date din memorie care în clasa echo „Date în memorie:

"; // verificați ce avem în memorie print_r($aMemData); echo "
"; echo "După cum puteți vedea, toate datele sunt disponibile, acum să le extragem din memorie, pentru asta mergem aici..."; ) else ( echo "Pachetul APC nu este instalat, instalați-l și apoi veți test!"; ) ?>

În acest script, citim doar informații din memorie. După cum puteți vedea, toate informațiile sunt citite perfect din memorie. Să ne uităm la ultimul exemplu.

index3.php

bEnabled) ( // Dacă APC este disponibil $oCache->delData("my_object"); // Preluare date din memorie $oCache->delData("our_class_object"); // Preluare date din memorie $aMemData = $oCache-> getData ("my_object"); // încercând să recuperăm datele $aMemData2 = $oCache->getData ("our_class_object"); echo "Date din memorie:

"; // Verificați ce este stocat în memorie print_r($aMemData); echo "
"; echo "Date din memoria obiectului clasei CacheAPC:
"; print_r($aMemData2); echo"
"; echo "După cum puteți vedea, toate datele au fost extrase din memorie. Ura!"; ) else ( echo "pachetul APC nu este instalat, instalați-l și apoi testați-l!"; ) ?>

Concluzie

Vă mulțumim pentru atenție! Sper că v-a plăcut să citiți despre utilizareAPC înPHP. Dacă aveți alte idei despre utilizareAPC la scriereScripturi PHP, scrieți despre asta în comentarii.

sudo apt-get install php-apc - nu funcționează

APC nu mai este necesar în Ubuntu 14.04. APC nu este acceptat în PHP 5.5, care vine cu propriul cache Opcache încorporat. Asigurați-vă că memoria cache este activată, editați fișierul /etc/php5/apache2/php.ini.
A inlocui:

;opcache.enable=0

Opcache.enable=1

Apoi asigurați-vă că modulul php este activat:

# php5enmod opcache

În cele din urmă, reporniți Apache:

Reporniți serviciul apache2

Examinare:

http:// /info.php

Creați un fișier info.php cu următorul conținut în rădăcina directorului serverului web /var/www/html/

Și deschideți-l în browser. Acolo veți găsi informații despre PHP, inclusiv dacă memoria cache este activată. Nu lăsați acest fișier pe serverul de producție. Scoateți-l după verificare.
Trebuie sa vezi:

Memorarea în cache a codului operațional Zend OPcache și optimizarea de rulare activată etc.

Cum se instalează cache PHP alternativ (APC) pe Ubuntu 12.04

Instalare de la PECL

Pentru a instala din depozitul Ubuntu, vezi mai jos.

Despre APC.
APC este un sistem excelent de stocare în cache a codului de operare pentru PHP, care poate ajuta la accelerarea site-ului dvs. PHP este un limbaj de scriptare dinamic pe partea de server care trebuie analizat, compilat și executat de către server la fiecare cerere de pagină. În multe cazuri însă, solicitările produc exact aceleași rezultate, ceea ce înseamnă că serverul cloud trebuie să repete în mod inutil toți acești pași pentru fiecare dintre ei.
Aici intervine APC. Ceea ce face este să salveze opcode PHP (codul de operație) în memoria RAM și, dacă este solicitat din nou, îl execută de acolo. În esență, ocolește pașii de analizare și compilare și minimizează unele încărcări inutile pe serverul cloud.

Se presupune că aveți propriul VPS cu privilegii de root și LAMP instalat.

Mai întâi, instalați pachetele:

Sudo apt-get install php-pear php5-dev make libpcre3-dev

Acum puteți instala APC folosind comanda pecl:

Sudo pecl install apc

Vi se va cere să răspundeți la mai multe întrebări, dar până când știți răspunsul exact, utilizați implicit apăsând Enter.

Următorul și ultimul pas este editarea fișierului php.ini

adăugând linia la sfârșit:

Extensie=apc.so

Salvați fișierul și reporniți Apache:

Reporniți serviciul Sudo apache2

Pentru a verifica dacă APC este activat, verificați pagina de informații PHP. Dacă nu aveți unul, creați unul în directorul /var/www:

Nano /var/www/info.php

și lipiți codul:

Deschideți-l în browser. Acolo veți găsi informații despre PHP, inclusiv dacă memoria cache este activată. Nu lăsați acest fișier pe serverul de producție. Scoateți-l după verificare.

Configurarea APC

Ați instalat APC și rulează cu setările implicite. Există cel puțin două setări de care ar trebui să fii conștient. Deschideți php.ini pe care l-ați editat deja:

Sudo nano /etc/php5/apache2/php.ini

Sub linia pe care ați activat APC, adăugați:

Apc.shm_size = 64

Acest lucru va permite APC să folosească 64 MB de RAM pentru cache. În funcție de configurația dvs., puteți modifica această valoare.
Următorul rând de adăugat este:

Apc.stat = 0

Parametrul apc.stat verifică scriptul la fiecare cerere pentru a vedea dacă s-a schimbat sau nu. Dacă scriptul s-a schimbat, APC îl va recompila și va pune în cache noua versiune. Acesta este comportamentul implicit al APC după instalare. Setând valoarea parametrului la 0, îi spunem APC să nu verifice modificările de script. Acest lucru îmbunătățește performanța, dar dacă scriptul a fost modificat, modificările nu vor fi aplicate până când serverul este repornit. Astfel, valoarea 0 este recomandată a fi folosită doar pe un server de producție unde nu există modificări constante de cod.

monitorizare APC
Există un mic script pentru monitorizarea stării și performanței cache-ului APC.

Puteți copia fișierul apc.php din /usr/share/php/ în directorul de lucru al serverului web, de exemplu /vwr/www:

Cp /usr/share/php/apc.php /var/www - pentru instalat de pecl

Sau descărcați:

Wget http://pecl.php.net/get/APCu -O - | tar xz --wildcards apcu*/apc.php

Acum accesați acest fișier dintr-un browser:

http:// /apc.php

Ar trebui să vedeți statisticile APC. Vă rugăm să rețineți că APC are suficientă memorie și fragmentarea nu este foarte mare.
Un semn bun ar fi un procent mare de accesări în cache, aproximativ 95% după mai multe solicitări.

Instalarea cache-ului APC din depozitul Ubuntu

$ sudo apt-get install php-apc

Reporniți Apache și uitați-vă la info.php. Ar trebui să apară secțiunea APC (Enabled On).
Pentru monitorizare, utilizați utilitatea inclusă în kit-ul de livrare:

Cd /usr/share/doc/php-apc # gunzip apc.php.gz

Copiați fișierul apc.php în, de exemplu, /var/www
Accesați fișierul dintr-un browser:

http:// /apc.php

Eroare:
Nu sunt disponibile informații de cache. APC nu pare să ruleze.

apare dacă nu este specificată nicio parolă în codul apc.php.
Editați fișierul apc.php:

# vi /var/www/apc.php

și setați numele de utilizator și parola:

Valori implicite ("ADMIN_USERNAME","apc"); // Admin Username defaults("ADMIN_PASSWORD","pass"); // Parola de administrator - SCHIMBĂ ACEASTA PENTRU ACTIVARE!!!

Valori implicite ("USE_AUTHENTICATION",0);

Opțiuni suplimentare în /etc/php5/apache2/conf.d/apc.ini

;apc.enabled=1 – nu este relevant;apc.enable_cli=1 – nu este relevant;apc.shm_size=64M # implicit 32M ;apc.stat = 0