Autor | Zpráva | ||
---|---|---|---|
ShiraNai7 Profil |
#1 · Zasláno: 23. 3. 2011, 20:36:52 · Upravil/a: ShiraNai7
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 |
#2 · Zasláno: 23. 3. 2011, 21:37:20
Na svým systému mám kolem 1MB, je to dvouvrstvý CMS (PHP 5 OOP + Smarty šablony)
|
||
ShiraNai7 Profil |
#3 · Zasláno: 24. 3. 2011, 09:20:40 · Upravil/a: ShiraNai7
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 |
#4 · Zasláno: 24. 3. 2011, 10:28:00
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 |
#5 · Zasláno: 24. 3. 2011, 15:46:08
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 |
#6 · Zasláno: 24. 3. 2011, 16:33:38
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 |
#7 · Zasláno: 24. 3. 2011, 17:16:23
Aesir:
Díky, zkusím tu virtualizaci. Hrabat se a kompilovat cosi z github - na to se necítím :) |
||
ShiraNai7 Profil |
#8 · Zasláno: 24. 3. 2011, 20:46:05 · Upravil/a: ShiraNai7
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 |
#9 · Zasláno: 24. 3. 2011, 20:55:42 · Upravil/a: Aesir
ShiraNai7:
Pokud máte instalované PHP z nějakého balíku např. přes apt-get, tak zkuste vynechat parametr --with-php-config ./configure |
||
amon Profil |
#10 · Zasláno: 24. 3. 2011, 21:09:35
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 |
#11 · Zasláno: 24. 3. 2011, 21:12:27 · Upravil/a: ShiraNai7
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 |
#12 · Zasláno: 24. 3. 2011, 22:53:51
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 |
#13 · Zasláno: 24. 3. 2011, 23:22:13 · Upravil/a: ShiraNai7
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. |
||
Časová prodleva: 13 let
|
0