Profilarea codului php

În ingineria software-ului, profilarea ("profilarea programelor", "profilare software") este o formă de analiză dinamică a programelor de cantități, de exemplu, spațiul (complexitatea de timp) sau complexitatea unui program, utilizarea unor instrucțiuni speciale sau frecvența și durata apelurilor pentru funcții. Cel mai frecvent, informarea profilului.







Cu alte cuvinte, profilarea este un lucru necesar și util. Din păcate, IDE nu se poate conecta direct la profilarea PHP (stau pe Eclipse), așa că va trebui să fac o serie de gesturi.

Xdebug este o extensie pentru PHP, permițându-vă să depanați și codul profiler.

sudo apt-get instala php5-xdebug

Apoi deschideți php.ini-ul nostru.

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

și adăugați următoarele:

# xdebug
xdebug.profiler_enable = OFF
xdebug.profiler_output_name = xdebug.out.% t
xdebug.profiler_output_dir = / tmp
xdebug.profiler_enable_trigger = ON

  • xdebug.profiler_enable - în mod implicit, profiler este dezactivat;
  • xdebug.profiler_enable_trigger - dar îl puteți activa cu un declanșator, declanșatorul fiind variabila XDEBUG_PROFILE. transferat prin cookie-uri, POST sau GET (adică pentru rularea profilului fișierului index.php, ar trebui să fie executat cu parametrul index index.php? XDEBUG_PROFILE);
  • xdebug.profiler_output_name - un șablon pentru numele jurnalelor;
  • xdebug.profiler_output_dir - în cazul în care aceste jurnale vor fi stocate (dosarul trebuie să existe și permisiunile de scriere trebuie să fie setate).

Nu uitați să reporniți Apache:

serviciul sudo apache2 reporniți

Asta e tot, de fapt. Mergem la browser-ul de pe pagina potrivită a site-ului de care avem nevoie adăugând GET-trigger-ul de solicitare, vezi tata, unde sunt scrise jurnalele. Fișierele ar trebui să înceapă să apară, aici, cu ceva de genul:

cfl = php: intern
cfn = php :: preg_replace






apeluri = 1 0 0
1450 0

Și așa mai multe zeci de mii de linii. Dar vrei cel puțin un fel de vizualizare, graficele sunt frumoase. Apoi trebuie să obțineți un jurnal de vizualizare. Sunt mai multe, am stabilit pe KCachegrind.

KCachegrind

KCachegrind este pus tot atât de elementar:

sudo apt-get instala kcachegrind

Litera "K" de la începutul numelui programului pare să indice că totul se făcea sub KDE și, cel mai probabil, stăm sub Gnome. Ei bine, pentru că Gnome este mai bun decât KDE. Aici. " Ei bine, din cauza acestui lucru la începutul programului se pot obține erori cu klauncher. Se tratează pur și simplu, este necesar să se livreze plug-in-uri:

sudo apt-get instala kdelibs5-plugin-uri

Rulați programul, deschideți fișierul jurnal dorit și admirați. Și trebuie să admirați totul - listați toate funcțiile care sunt numite, numărul de apeluri, timpul petrecut în microsecunde, capacitatea de a vizualiza sursa fiecărei funcții în codul sursă și doar grafica simplă:

Profilarea codului php

Profilarea codului php

Profilarea codului php

Profilarea codului php

Și totul ar fi bine, dacă nu unul. Xdebug versiunile 2.x nu pot fi în profil de memorie. Absolut. Și memoria este importantă. Foarte. Și tu vrei să-l faci și tu. Există două opțiuni principale: folosiți fie xhprof (cramă FaceBook), fie memprof. M-am oprit la acesta, deoarece vă permite să generați jurnale pentru toate aceleași KCachegrind.

Pentru a instala, executați următoarele comenzi:

sudo apt-get instala libjudy-dev libjudydebian1
sudo pecl instalează memprof

Apoi vom crea memprof.ini.

sudo nano /etc/php5/mods-available/memprof.ini

și, în final, conectați modulul și reîncărcați Apache:

sudo php5enmod memprof
serviciul apache2 restart

Cum functioneaza aceasta. La începutul codului sursă necesar, trebuie să activați memprof. și la sfârșit păstrați bustenii în locul potrivit pentru noi:

memprof_enable ();
// Codul nostru.
memprof_dump_callgrind (fopen ("/ tmp / logs.out", "w"));

Acum, rămâne doar să deschideți fișierul de jurnal creat în programul KCachegrind și să vedeți care memorie de tip kushenka.







Trimiteți-le prietenilor: