Ubuntu tarafından ayıklama PHP Xdebug2 ait profil verilerini kullanmak için

3 Cevap php

Benim soru this article dayanmaktadır.

How can you make the profiling data about a PHP code by Xdubug2 and then put it to an app like KCacheGrind?

Bu tarayıcıda benim hata iletileri vurgulamaktadır beri, benim Ubuntu başarıyla Xdebug kullandık. Ancak, xdebug gibi herhangi bir terminal aracı bulmak değil.

Bu gibi benim PHP kodu görsel bir görünümü var istiyorum

alt text

3 Cevap

Php.ini için bu satırı ekleyin

xdebug.profiler_enable = 1

Eğer bir web sunucusu üzerinden PHP çalıştırmak için ne varsa Sonra, aksi conf değişiklik çekilmiyor, web sunucusu yeniden başlatmanız gerekir.

Eğer cli ile PHP çalışıyorsa, o zaman tabii ki yeniden başlatma gereklidir.

Eğer PHP komut çalıştırdığınızda Şimdi, bir cachegrind.out.PID dosya xdebug.profiler_output_dir php.ini ayarı tarafından belirtilen dizinde oluşturulur. Varsayılan olarak / tmp olduğunu.

Yani bir KCacheGrind yüklemek mümkün olduğunu dosyaları.

Bu profil nesil çağırmak için diğer araçlar vardır, http://www.xdebug.org/docs/all_settings#profiler_enable onlar hakkında okuyabilirsiniz

WebGrind bir göz atın (http://code.google.com/p/webgrind/)

Ben sadece bir terminal erişimi ve test etmek değil görsel bir ortam vardı benzer bir durum içine koştu. Daha da kötüsü, ben bir windows makine ve Macun kullanıyordum.

Mevcut çözümler vardır

  1. WebGrind Yükleme (http://code.google.com/p/webgrind/)
  2. Xdebug Koşu ve bir cachegrind izleyici var bir makine üzerine cachegrind.out dosyaları kopyalarken.

Benim için cevap benim yerel pencereler makine üzerine cachegrind dosyaları SCP oldu, ve onlara bakmak için WinCachegrind kullanıyor. Eğer linux kutusu üzerine onları SCP ve dosyaları KCacheGrind çalıştırabilir. Bunun dezavantajı, aynı dosya yapısına sahip olmayabilir, bu nedenle sourcecode görmek mümkün olmayacaktır. Eğer yerel makinede de kaynak var, ya da orada alabilirsiniz varsa, siz de bu çözebilirsiniz. Vim (ya da diğer düzenleyici) olarak cachegrind dosyaları açmak ve genel arama yapmak ve yerel makinenizde doğru kaynak yolu onları değiştirmek için yolları üzerinde değiştirin.

Ben bu aradığınız ne olduğunu umuyoruz.

Yorum adrese DÜZENLEME:

Eğer biraz farklı bir callgrind dosya almak için çalışıyorsanız. Bunun için, (Ben senin düşünüyorum) Linux çalışıyor olması gerekiyor ve mevcut callgrind ve valgrind programları var. Burada varsaymak son şey diğer bazı moda bir Apache mod olarak PHP çalışan ve olmamasıdır. Apache başlangıç ​​karşı callgrind aracını kullanın ve sonra da tarayıcıda isteği çalıştırın. Bu size php çağrı ağacı, aynı zamanda sorun neden olabilir Apache birçok şeyler değil, sadece ayrıntılı bilgi verecektir.

burada bir örnektir

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X

-X sadece bir iplik ile hata ayıklama modunda apache başlayacak. Burada bir web tarayıcısı açın ve istediğiniz php script çarptı. Sonra geri ve kapatma apache gidin. Bu da callgrind çözümlenmeye bitmeli.

Eğer apache ya da bir web tarayıcıya ihtiyacınız yoksa, sadece php komutu ile callgrind çalıştırmayı deneyebilirsiniz

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php

Bu ancak tüm apache şeyler olmadan aynı sonuçları vermelidir.