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:
É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.