Profilírozó php kód

A szoftverfejlesztés, a profil ( „program profilalkotás”, „szoftver profilalkotás”) egy formája dinamikus program elemzése, hogy az intézkedések, például a tér (memória) vagy időbonyolultsága program, a használati adott utasítást, vagy a frekvencia és időtartama függvényhívásokkal. Leggyakrabban profil információs szolgál, hogy segítse a program optimalizálása.

Más szóval, a profilalkotás - valami szükséges és hasznos. Sajnos IDE közvetlenül PHP profilalkotás nem (ül Eclipse), így lesz, hogy egy mozdulatsor.

Xdebug - egy PHP kiterjesztés, amely lehetővé teszi a hibakeresés és profil a kódot.

sudo apt-get install php5-Xdebug

Ezután kinyitjuk a php.ini.

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

és hozzáadjuk a következő:

# 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 - alapértelmezett profiler ki van kapcsolva;
  • xdebug.profiler_enable_trigger - de lehet kapcsolva keresztül a ravaszt, a ravaszt változó XDEBUG_PROFILE. keresztül továbbított a cookie-kat, POST vagy GET kérések (... azaz, hogy futtassa a index.php profilozó meg kell kezdeni a GET paraméter index.php XDEBUG_PROFILE?);
  • xdebug.profiler_output_name - névmintát kapott naplók;
  • xdebug.profiler_output_dir - ahol a naplók tárolására (a mappa léteznie kell, és be kell állítani írható).

Ne felejtsd el újraindítani az Apache:

sudo service apache2 restart

Ennyi, tényleg. Menj a böngésző egy adott oldalt a kívánt helyre azzal a kiegészítéssel, a GET-kérés ravaszt, már meg apu, ahol naplók vannak írva. Amennyiben kezdenek megjelenni, amit találtam, hogy ez nagyjából a következő tartalommal:

CFL = php: belső
CFN = php :: preg_replace
felszólítja = 1 0 0
1450 0

És így néhány tízezer vonalak. De szeretnék legalább néhány megjelenítés, grafika szebb. Akkor mi lesz a néző naplók. Többen közülük, megálltam KCachegrind.

KCachegrind

KCachegrind tesz minden további egyszerű:

sudo apt-get install KCachegrind

Bukvochki „K” első program nevét úgy tűnik, hogy azt mondja, hogy mindent megtettek a KDE, és valószínűleg alatt ülni Gnome. Nos, azért, mert a Gnome jobb KDE. Itt van. Nos, azért, mert ez az, az a program kezdetekor lehet mászni hibákat klauncher. A kezelt egyszerűen meg kell szállítani plug-inek:

sudo apt-get install kdelibs5-plugins

Indítsa el a programot, nyissa meg a megfelelő naplófájl, és csodálja. És van valami, hogy megcsodálják - a lista abszolút minden függvényhívás, a hívások száma, az eltelt időt mikroszekundumban, a képességét, hogy a forrás az egyes funkciók a forráskódban, jól, csak vicces grafika:

Profilírozó php kód

Profilírozó php kód

Profilírozó php kód

Profilírozó php kód

És minden jó, ha nem egy dolog. Xdebug változat 2.x nem memória profil. Abszolút. A memória ugyanolyan fontos. Nagyon. És azt is akarja, hogy profilos. Két fő lehetőség van: vagy használja xhprof (csapkod a Facebook), vagy memprof. Abbahagytam az utolsó, hogy van. Hogy. Ő lehetővé teszi, hogy létrehoz naplófájlok az összes azonos KCachegrind'a.

Telepítéséhez hajtsa végre a következő parancsot:

sudo apt-get install libjudy-dev libjudydebian1
sudo pear install memprof

Ezután hozzon létre memprof.ini.

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

és a végén a plug-inek és túlterhelés Apache:

sudo php5enmod memprof
szolgáltatás apache2 restart

Hogy ezek a dolgok. Az elején a szükséges forráskódot kell venni memprof. és a végén, hogy mentse naplók a megfelelő helyre számunkra:

memprof_enable ();
// A kód.
memprof_dump_callgrind (fopen ( "/ tmp / logs.out", "w"));

És most már csak azt kell megnyitni egy log fájlt KCachegrind programot, és nézni, ahogy valaki kushenkaet memóriát.