Referansımı çevrimdışına çıkacak olan SO Documentation beta'dan yayınlayın.
XDebug ile profil oluşturma
PHP uygulamalarının profillenmesine ve çalışma zamanı hata ayıklamasına yardımcı olmak için Xdebug adlı bir PHP uzantısı vardır . Profil oluşturucuyu çalıştırırken, çıktı "cachegrind" adlı ikili biçimde bir dosyaya yazılır. Bu dosyaları analiz etmek için her platformda uygulamalar mevcuttur. Bu profili oluşturmak için uygulama kodu değişikliği gerekmez.
Profil oluşturmayı etkinleştirmek için uzantıyı yükleyin ve php.ini ayarlarını yapın. Bazı Linux dağıtımları standart paketlerle gelir (örneğin Ubuntu'nun php-xdebug
paketi). Örneğimizde isteğe bağlı olarak bir istek parametresine göre profili çalıştıracağız. Bu, ayarları sabit tutmamıza ve profil oluşturucuyu yalnızca gerektiği gibi açmamıza olanak tanır.
# php.ini settings
# Set to 1 to turn it on for every request
xdebug.profiler_enable = 0
# Let's use a GET/POST parameter to turn on the profiler
xdebug.profiler_enable_trigger = 1
# The GET/POST value we will pass; empty for any value
xdebug.profiler_enable_trigger_value = ""
# Output cachegrind files to /tmp so our system cleans them up later
xdebug.profiler_output_dir = "/tmp"
xdebug.profiler_output_name = "cachegrind.out.%p"
Ardından, uygulamanızın profil oluşturmak istediğiniz URL'sine bir istekte bulunmak için bir web istemcisi kullanın, ör.
http://example.com/article/1?XDEBUG_PROFILE=1
Sayfa işlendikçe, aşağıdakine benzer bir ada sahip bir dosyaya yazacaktır
/tmp/cachegrind.out.12345
Varsayılan olarak dosya adındaki sayı, onu yazan işlem kimliğidir. Bu, ayar ile yapılandırılabilir xdebug.profiler_output_name
.
Yürütülen her PHP isteği / işlemi için bir dosya yazacağını unutmayın. Örneğin, bir form gönderisini analiz etmek isterseniz, GET isteğinin HTML formunu görüntülemesi için bir profil yazılır. XDEBUG_PROFILE parametresinin, formu işleyen ikinci isteği analiz etmek için sonraki POST isteğine geçirilmesi gerekir. Bu nedenle profil oluştururken bazen doğrudan bir formu POST yapmak için kıvrılma çalıştırmak daha kolaydır.
Çıktıyı Analiz Etme
Profil önbelleği yazıldıktan sonra KCachegrind veya Webgrind gibi bir uygulama tarafından okunabilir . Popüler bir PHP IDE olan PHPStorm da bu profil oluşturma verilerini görüntüleyebilir .
Örneğin, KCachegrind aşağıdakileri içeren bilgileri görüntüler:
- Yürütülen işlevler
- Hem kendisi hem de sonraki işlev çağrılarını içeren çağrı süresi
- Her bir işlevin çağrılma sayısı
- Çağrı grafikleri
- Kaynak koduna bağlantılar
Bakılacak şey
Açıkçası performans ayarlama her uygulamanın kullanım durumlarına çok özeldir. Genel olarak aşağıdakileri aramak iyidir:
- Görmeyi beklemediğiniz aynı işleve tekrarlanan çağrılar. Verileri işleyen ve sorgulayan işlevler için bunlar, uygulamanızın önbelleğe alması için temel fırsatlar olabilir.
- Yavaş çalışan fonksiyonlar. Uygulama zamanının çoğunu nerede geçiriyor? performans ayarındaki en iyi getirisi, uygulamanın en çok zaman harcayan bölümlerine odaklanmaktır.
Not : Xdebug ve özellikle profil oluşturma özellikleri çok kaynak yoğundur ve PHP'nin çalışmasını yavaşlatır. Bunların bir üretim sunucusu ortamında çalıştırılmaması önerilir.