Portál AbcLinuxu, 12. května 2025 06:00

Dotaz: Jak zjistit kolik zežere můj PHP kód paměti

30.5.2014 20:46 Falko
Jak zjistit kolik zežere můj PHP kód paměti
Přečteno: 517×
Odpovědět | Admin
Ahoj, jak testujete váš php kód na využité paměti? Jde to nějak zjistit pro optimalizaci kódu? Děkuji

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 30.5.2014 21:01 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Jak zjistit kolik zežere můj PHP kód paměti
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podívám se, kolik žere fastcgi proces, pod kterým běží :-).

Jde ti o optimalizaci z hlediska interpreteru (to podle mě v PHP nemá moc cenu) nebo samotného programu (jako že by sis neměl alokovat pole 1000^3 a tak)?
xxxxxx avatar 30.5.2014 22:43 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Jak zjistit kolik zežere můj PHP kód paměti
Odpovědět | | Sbalit | Link | Blokovat | Admin
memory_get_usage() a memory_get_peak_usage() můžou přijít vhod.
Josef Kufner avatar 31.5.2014 11:26 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak zjistit kolik zežere můj PHP kód paměti
Tyto metody se hodí pro takové orientační zjištění, zda něco nežere příliš mnoho nebo zda něco neleakuje v případě déle běžících procesů či operací nad velkými daty (obrázky, nebufferované exporty).

Jak už ostatní psali, paměť nemá smysl příliš hrotit. Jen si zkontrolovat, že tam není nějaký hodně velký žrout, neboť velké alokace paměti vytěsní cache a to už se na výkonu projeví.

Další velmi užitečnou věcí je profiler. Doporučuju používat dva profilery:

První, velmi hrubý a vestavěný do aplikace, který s minimálním dopadem na výkon sleduje celkové odezvy serveru i v produkčním provozu. Na to se hodí microtime(). Naměřené hodnoty loguj a připrav si jednoduchý nástroj vestavěný přímo v aplikaci, který log prozkoumá a spočítá nějaké základní statistiky (min, max, avg) pro jednotlivé části aplikace.

Druhým profilerem je XDebug, který umí uložit velmi podrobná data o běhu skriptu. Takových dat může být klidně i desítky až stovky MB za jedno načtení stránky. Prohlédnout si je můžeš pak například pomocí KCacheGrind. V okamžiku kdy to někde drhne, tento profiler ti řekne kde přesně. Kolikrát se která funkce volá, jak dlouho její spuštění trvá, kolik času se tam stráví celkem, …
Hello world ! Segmentation fault (core dumped)
1.6.2014 23:12 Falko
Rozbalit Rozbalit vše Re: Jak zjistit kolik zežere můj PHP kód paměti
Ahoj a díky, jak dostanu ten XDebug do Debianu? Nemůžu nic najít. Díky
MMMMMMMMM avatar 2.6.2014 07:33 MMMMMMMMM | skóre: 44 | blog: unstable | Valašsko :-)
Rozbalit Rozbalit vše Re: Jak zjistit kolik zežere můj PHP kód paměti
tohle je sice pro Ubuntu, ale postup je v podstatě stejný i pro Debian ;-) http://ubuntuforums.org/showthread.php?t=525257
2.6.2014 20:08 Falko
Rozbalit Rozbalit vše Re: Jak zjistit kolik zežere můj PHP kód paměti
Díky, tak jsem to nainstaloval, ale když zadám nějakou adresu, tak v nastaveném adresáři pro výstup nic není, jak pozná, kdy se má spustit a něco dělat ?
Josef Kufner avatar 2.6.2014 22:54 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Jak zjistit kolik zežere můj PHP kód paměti
Viz http://xdebug.org/docs/profiler, část "Starting The Profiler".
Hello world ! Segmentation fault (core dumped)
31.5.2014 09:27 Kit
Rozbalit Rozbalit vše Re: Jak zjistit kolik zežere můj PHP kód paměti
Odpovědět | | Sbalit | Link | Blokovat | Admin
PHP se spíš vyplatí optimalizovat na výkon. Pokud proces zabere dvojnásobnou paměť, ale zvládne úlohu za polovinu času, představuje to stejnou paměťovou zátěž serveru, ale zlepší se odezva.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.