Autor Zpráva
ShiraNai7
Profil
Neznáte někdo nějaký kvalitní profiler paměti PHP skriptu? Nástroj, kterým bych přehledně zjistil, kde je skript nejnáročnější na paměť, kolik si vyžádá která funkce a podobně. Mám a používám XDebug - ten ale zobrazuje pouze časy volání, o paměti ani zmínka. Slibně vypadal také XHProf, ale ten je zaprvé jen pro Linux/Mac a zadruhé funguje jen na x86 architektuře a navíc ještě jen na některých procesorech a to mám tedy nulovou šanci rozchodit. Nestačí mi funkce memory_get_usage() apod, ta má pro mě nulovou analytickou hodnotu - vím kolik paměti, ale nevím přesně kde, co a proč.

Taky by mě zajímalo kolik je běžné omezení PHP paměti a kolik spotřebovává například vámi používáná aplikace/framework/cms v praxi.
Zjistíte to pomocí tohoto řádku, který umístíte nejlépe úplně nakonec hlavního skriptu, ze kterého se startuje systém a zpracovává nějaký běžný požadavek:
echo round(memory_get_peak_usage() / 1024, 2).'kB';


Např. můj framework na kterém pracuji vypíše na jedné stránce administrace: 2604.54kB
Což mi připadá celkem málo, když vemu v potaz template systém, jazykové soubory a několik runtime cache mechanismů.
Lamicz
Profil
Na svým systému mám kolem 1MB, je to dvouvrstvý CMS (PHP 5 OOP + Smarty šablony)
ShiraNai7
Profil
A nějaký profiler? Dvěma otázkami v 1 tématu jsem jej asi odsoudil k nevyhnutelné zkáze :/
Hlavně by mě zajímalo kolik paměti zabírá zvlášť samotný můj skript (= objekty, data) a kolik které konkrétní rozšíření (mysql apod). Jestli je to vůbec možné.. detailní přehled by byl nejlepší, existuje něco takového?
Aesir
Profil
ShiraNai7:
V případě PHP moc možností bohužel není. XHProf je nyní asi opravdu to nejlepší, co existuje. Podle mě je ideální se soustředit na jeho rozběhnutí, pokud to jen trošku lze.

XDebug má od verze 2 profilování paměti odstraněné, ale existuje nějaký neoficiální patch (nemám ozkoušené), který to umožňuje.

Další možnosti jsou už asi jen "aplikační profilery", ale tam už se neobejdete bez úprav kódu, kdy musíte definovat přesně místa, kde vás zajímá sledování paměti, příkladem může být například PQP.
ShiraNai7
Profil
Aesir:
Podle mě je ideální se soustředit na jeho rozběhnutí, pokud to jen trošku lze.

Používám Windows 7 a navíc ještě dvoujádrový a 64 bitový procesor, takže celkem smůla. Instalovat linux na nějakou starší mašinu jen kvůli tomu by byl overkill. Asi si zkusím něco sám zprasit pomocí php ticků a následné analýzy backtrace, času a paměti :)
Aesir
Profil
ShiraNai7:
Instalovat linux na nějakou starší mašinu jen kvůli tomu by byl overkill.
Od toho je virtualizace ;) Vyvíjím na stejné konfiguraci jako vy, ale PHP provozuji na vritualizovaném linuxovém serveru (VirtualBox), takže můžu experimentovat bez ohrožení host OS a vyvíjet ve stejném prostředí jako na serveru.

Asi si zkusím něco sám zprasit pomocí php ticků a následné analýzy backtrace, času a paměti :)
Možná by bylo nejdřív jednodušší zkusit zkompilovat fork XHProfu z tohodle pull requestu, ve kterém autor tvrdí, že udělal úpravy pro kompatibilitu s Windows.
ShiraNai7
Profil
Aesir:
Díky, zkusím tu virtualizaci. Hrabat se a kompilovat cosi z github - na to se necítím :)
ShiraNai7
Profil
Aesir:
S linuxem a instalacemi na něm nemám zkušenosti, tak je celkem zázrak že jsem se dostal přes instalaci virtualboxu, ubuntu 10.10, xamppu až po tuto chybu:

/home/shira/xhprof-0.9.2/extension/xhprof.c:27: fatal error: php.h: No such file or directory
compilation terminated.


Kompletní výpis z konzole zde.
Mohl bys (nebo kdokoliv kdo má páru co se děje) mě trošku nakopnout co mám udělat, aby to našlo soubor php.h? Proč tam není, co mám nainstalovat?
Díky
Aesir
Profil
ShiraNai7:
Pokud máte instalované PHP z nějakého balíku např. přes apt-get, tak zkuste vynechat parametr
--with-php-config
a spustit samotné
./configure
jinak zbytek nechat stejný.
amon
Profil
Skúste stiahnuť XAMPP development package, problém by mal zmiznúť. Inštalácia/konfigurácia XAMPP-u sa vám neprepíše, len sa pridajú potrebné súbory.
ShiraNai7
Profil
Hm. To sice fungovalo, ale to mi asi aktualizovalo PHP co jsem nainstaloval jako balíček do ubuntu. Tím se mi tam dostal i další apache, který se teď mlátí s tím od XAMPPU. Jak se toho zbavit? :)

edit: tak neřešit, přeinstaluju ubuntu, nemám na to nervy :) už vím snad co a jak, zkusím a napíšu

amon:
Kouknu, díky
Davex
Profil
ShiraNai7:
co mám udělat, aby to našlo soubor php.h?
Asi tam chybí nějaké vývojové balíky jako php5-dev apod.

apt-get install php5-dev
ShiraNai7
Profil
Vyřešeno. Potřeboval jsem XAMPP development package, jak psal amon.
Vše funguje jak má, teď si už můžu pohrávat s XHProfem, díky všem za rady :)

Davex:
Bylo to tím, ale musel jsem nainstalovat ty přímo pro XAMPP, protože má php obsažené a oddělené od toho co může být už v systému jako balíček. Když jsem instaloval XHPref, tak jsem musel uvést cestu ke konfiguraci PHP v XAMPPu a také tedy mít potřebné balíky pod XAMPPem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0