2013-02-13 22 views
5

xdebug'un sadece X ms'nin üzerinde veya "KB KB'nin üzerinde" atlayışını ", örneğin 100 ms'den uzun süren veya 100 KB'den fazla bellek kullanımını artıran her yürütmeyi izlemesini istiyorum. Bu, görmek istemediğim binlerce optimizasyon hattını görmezden gelebilir ve optimizasyonu çok daha kolaylaştıracaktır. ZF2'de, şişirilmiş çerçeve, kurumsal projemizde besteci otomatik yükleyiciyle başlamak için 1 saniye sürmektedir. binlerce satırda gerçekten hiçbir işe yaramayacağım. Hat boyunca bir yerde, icra zamanındaki daha büyük sıçramaları buluyorum, ancak uzun bir kaydırma süresinden sonra değil.Sadece xdebug ile X'den daha yavaş olan yürütmeleri günlüğe kaydetmenin bir yolu var mı?

"X'ten daha hızlı" yürütmelerin günlüğe kaydedilmesini devre dışı bırakmak için varsayılan bir seçenek var mı yoksa yoksa daha yavaş olanları kopyalayabilecek yardımcı kabuk/python komut dosyasını biliyor musunuz?

Açıklama için, uygulamanızda xdebug_start_trace() işlevini çalıştırarak .xt dosyasının içeriği hakkında konuşuyorum.

+0

"xdebug.trace_ *" tarafından üretilen çıktı hakkında konuşuyorsunuz, değil mi? –

+0

Güzel bir soru, cevabı bilmek istiyorum – Haensel

+0

@FAngel Güncelleme ana sorusu – Swader

cevap

1

Bu tür seçenekler hakkında hiçbir şey bilmiyorum, ancak önerebileceğim şey izleme yerine profil kullanmaktır.

Here bunu nasıl kullanabileceğiniz bir makaledir.

xdebug.profiler_enable = 0 
xdebug.profiler_enable_trigger = 1 
xdebug.profiler_output_dir="c:\Projects" 

ve sorgu parametresi ile profilcisini çalıştırmak url başlatmak istediğinizde ?XDEBUG_PROFILE=1

Bu cachegrind.out.* ve yer gibi adı olan bir dosya üretecektir: kısa ise php.ini dosyasına şu satırları yerleştirmek profiler_output_dir içine.

Bu dosya işletim sisteminiz için CacheGrind görüntüleyici ile görüntülenebilir. Yukarıdaki bağlantı, bu dosyaları farklı platformlar için görüntüleyen uygulamaların bir listesini içerir. ZendFramework uygulamasını profillemek için wincachegrind (Windows için) kullanıyordum. Benim için çok kullanışlı bir araç. Arayüz, çağrı ağacının, yürütme süresinin, çağrı sayısının vb. Görülmesini sağlar. Eh, ancak bellek kullanımını ölçmek için bir seçenek göremiyorum.

+0

Teşekkürler, sadece webgrind ile önbellek analiz çalıştım, ancak bu sonuçlar benim için işe yaramaz. "Toplam arama maliyeti" ve "toplam kapsayıcı maliyet" değerleri tamamen ilgisizdir, çünkü akışı göremiyorum ve büyük atlayışları ve roadbumps'ları tanımlayamıyorum - örneğin, function1() bir bağlamda 0.003s alabilir, ve bir diğerinde 1.3'ler - bu izler bunu yansıtmaz. Bu nedenle, neden performans çıkışı ile iz çıktı filtrelemek istiyorum. – Swader

+1

Hm. Tam olarak ne anlama geldiğini bildiğimden emin değilim, ancak wincachegrind'de fonksiyona sağ tıklarsanız genel menü öğesini gösterir. Genel panelde, bu fonksiyonun tüm çağrışımlarını, her fonksiyonun zamanı, arayan fonksiyonu ve dosya ile gösterir. Ayrıca, web'in etrafına baktım ve PHP'de yazılmış iz çıktı düzenleyicileri var. Bunları hiç kullanmadım, ama muhtemelen onları faydalı bulabilirsin. –

+1

[Here] (http://stackoverflow.com/q/1456395/1558311), iz çıktı izleyicisine az sayıda bağlantı gördüğüm SO hakkındaki bir sorudur. –