PHP bellek profilleme

2 Cevap php

Bir PHP sayfanın bellek kullanımını profil için iyi bir yolu nedir? Örneğin, benim veriler kullanarak ne kadar bellek görmek için, ve / veya işlev çağrıları en bellek tahsis edildiği.

  • xdebug kendi profil özelliği bellek bilgi vermek görünmüyor.

  • xdebug does kendi izleme özelliği bunu sağlamak. Her tek bir işlev çağrısı için bellek deltalar gösterir yana saf veri miktarı, ezici dışında bu, ne istediğinizi oldukça yakın. Belki bazı GUI aracı ile belli bir derinliğin altında aramaları, gizlemek mümkün olsaydı, bu benim sorunu çözecek.

Başka bir şey var mı?

2 Cevap

Peki, bu sizin için tam olarak ne aradığınızı olmayabilir, ancak PHP yerleşik bu irade çıktı bellek kullanım fonksiyonları bir çift var. Sadece bir işlev çağrısı kullanarak ne kadar bellek görmek istedim, bir çağrı önce ve sonra memory_get_peak_usage() kullanın ve farkı alabilir.

Sen memory_get_usage() çok benzer kullanarak verilerinizin etrafında aynı tekniği kullanın.

Oldukça sade bir yaklaşım, ama bu kod parçasını kontrol etmek için hızlı bir yoldur. Ben xdebug mem deltalar bazen yararlı olmak için çok ayrıntılı olabilir katılıyorum, bu yüzden sık sık sadece elle küçük parçalar için özel bellek kullanımını dökümü, sonra kod bölümüne daraltmak için kullanabilirsiniz.

http://geek.michaelgrace.org/2012/04/tracing-php-memory-usage-using-xdebug-and-mamp-on-mac/

Windows üzerinde iseniz, bu test etmek gerekir bu yüzden bir Mac üzerinde değilim, ama bu benim için çalışıyor.

Benim tracefile-analyzer.php dosyanın değiştirilmiş ve normal bir Unix komut dosyası olarak terminalde diyebiliriz ki üst PHP ikili yolunu ekledi.

#!/Applications/MAMP/bin/php5.3/bin/php
<?php
if ( $argc <= 1 || $argc > 4 )
{

755 bu dosyayı chmod unutmayın.

Kolayca otomatik olarak komut dosyası bir bellek profil dosyası (*. Xt) oluşturur, her zaman aramak için bir yakut Watchr komut dosyası oluşturabilir. Ve üzerinde komutu çalıştırmak zorunda kalmadan test ve iyileştirmeler görmeye devam verebilir yolu.