Yavaş profiller php. XHProf ile PHP Profil Oluşturma, web uygulaması geliştiricileri için profesyonel bir araçtır. Profil oluşturma günlüklerini toplama

  • 03.11.2019

php için xhprof kurulumu:

Sudo apt-get kurulumu php5-xhprof

Apache'yi yeniden başlatın:

Sudo hizmeti apache2 yeniden başlatma

phpinfo'yu yazdır (); ve modülün bağlı olup olmadığını kontrol edin?

xhprof.ini yapılandırmasına bir bağlantı olup olmadığını görmek için /etc/php5/apache2/conf.d dosyasını kontrol edin.

Değilse, bağlantıyı kendimiz oluşturun ve apache'yi yeniden başlatın.

Sudo ln -s /etc/php5/mods-available/xhprof.ini /etc/php5/apache2/conf.d/20-xhprof.ini sudo service apache2 restart

xhprof bağlantısını kontrol edin, 20-xhprof.ini'nin bağlı olup olmadığını kontrol edin:

Ekran görüntüsü 0.9.2 sürümünü gösteriyor, ancak kurulum sırasında 0.9.4 sürümü görüntülendi, ancak bu bizim için bir engel değil.

Artık kodumuzu profilleyebiliriz.

  1. Sayfanın başında xhprof_enable() ile profil oluşturmayı etkinleştirin;
  2. Sayfanın sonunda, xhprof_disable() ile profil oluşturmayı kapatın ve toplanan verileri save_run() ile kaydedin;
  3. Ardından, analiz edelim.

İşlev xhprof_enable () argüman olarak bayrakları alır:

İşlemci istatistiklerini yakalamak için XHPROF_FLAGS_CPU,

XHPROF_FLAGS_MEMORY - bellek için,

XHPROF_FLAGS_NO_BUILTINS - yerleşik işlevleri yok saymak için.

Kaydetmek ve daha fazla bilgi almak için bir profil analiz aracı kurmamız gerekiyor.

Arşivi analiz aracıyla xhprof: sayfasından indirin, 0.9.4 sürümünü alın.

Sunucuda veya yerel bilgisayarda, indirilen arşivi açacağımız localhost veya ayrı bir etki alanı aracılığıyla erişilebilen bir klasör oluşturun:

Artık profili kaydedebiliriz.

Https: //xn--d1acnqm.xn--j1amh/altadmin/posts/edit/188

İzleme kodu şuna benzer:

// Profil oluşturucuyu başlat - hem işlemci süresini hem de bellek tüketimini hesaplayacağız xhprof_enable (XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
// Profilli kod # Profil oluşturucuyu durdur $ xhprof_data = xhprof_disable (); # Raporu kaydedin ve onu görüntülemek için bir bağlantı oluşturun include_once "/var/www/html/xhprof-0.9.4/xhprof_lib/utils/xhprof_lib.php"; include_once "/var/www/html/xhprof-0.9.4/xhprof_lib/utils/xhprof_runs.php"; $ xhprof_runs = yeni XHProfRuns_Default (); $ run_id = $ xhprof_runs-> save_run ($ xhprof_data, "xhprof_test"); echo "Rapor: http://localhost/xhprof-0.9.4/xhprof_html/index.php? run = $ run_id & kaynak = xhprof_test"; yankı "\ n";

/var/www/html/xhprof-0.9.4 - içinde ihtiyacımız olan kitaplıkları açtığımız klasörün yolu.

Rapor: http: //localhost/xhprof-0.9.4/xhprof_html/index.php? Çalıştır = 57c32f3095d21 ve kaynak = xhprof_test

Profil analizi böyle görünüyor. Bu tablo, profillendirilmekte olan tüm işlev çağrılarını görüntüler.

Tablo başlıklarına tıklayarak fonksiyonları sıralayabiliriz.

Bazı fonksiyonların defalarca veya çok uzun süre çalıştırıldığını gördüğümüzde, bu fonksiyona tıklayabiliriz ve benzer bir tablo açılacaktır, ancak söz konusu fonksiyonun içindeki dahili çağrılar ve fonksiyonun çağrıldığı ebeveyn ortamı ile.

Göstergeler:
Toplam Dahil Duvar Süresi (soketlerden, dosya sisteminden ve diğer kaynaklardan gelen yanıtları beklemeyi hesaba katarak işlevleri yürütmek için harcanan zaman)
Toplam Dahil CPU (işlevleri yürütmek için harcanan zaman)
Toplam Dahil MemUse (bellek kullanımı)
Toplam Dahil PeakMemUse (en yüksek bellek kullanımı)
İşlev Çağrısı Sayısı

Raporu grafiksel olarak görüntüleme yeteneği de vardır. Ancak bunun için graphviz kütüphanesinin kurulu olduğundan emin olmanız gerekir:

Apt-get install graphviz

Bundan sonra, profilde görüntülemek ve voila için tıklamanız gerekir:

Artık kodu analiz edebilir ve geliştirebilirsiniz.

Uygulama profili oluşturma, programın çeşitli bölümlerinin (dosyalar ve işlevler) yürütme hızı hakkında verilerin toplanmasıdır. Kullanılabilir birçok PHP profil oluşturma aracı vardır, ancak tüm araçlar doğrudan üretimde analiz yapmak için uygun değildir.

XHProf Uygulama çalışırken neredeyse hiç ek yük olmadan istatistik toplayan mega basit bir profil oluşturucudur.

Neden profil?

Uygulamanız yavaş çalışmaya başlarsa, profil oluşturma hangi bölümün aptalca olduğunu anlamanıza yardımcı olabilir. Profil oluşturma sonucu genellikle gerçekleştirilen işlevlerin ve yürütme sürelerinin bir listesidir.

Profil oluşturma, uygulamanın herhangi bir optimizasyonundan önce yapılmalıdır. Aksi takdirde, tahminde bulunacaksınız. Büyük olasılıkla yanlış.

Xdebug sorunu

Xdebug, güçlü bir PHP çözümüdür. Ancak Xdebug platformunun kendisi o kadar ağırdır ki, canlı sitelerde kullanılamaz... XDebug, sunucu kaynaklarına önemli bir yük bindirir ve uygulamayı yavaşlatır.

Öte yandan, canlı bir sitedeki sorunlar, bir geliştiricinin ortamındaki ile aynı olmayabilir. Yalnızca geliştirici bilgisayarlarda profil oluşturma, yalnızca bazı sorunları gösterecektir.

Bu yüzden çözüm geliştirildi XHprof... Çalışan uygulamalarda kullanılmak üzere tasarlanmıştır. Bu profil oluşturucunun ana fikri, çalışma hızı hakkında gerekli tüm verileri toplarken uygulamada minimum yük oluşturmaktır. Çözüm, Facebook'tan adamlar tarafından geliştirildi ve yeni PHP sürümleri tarafından destekleniyor.

XHProf

Kurulum

Debian'da XHprof sid paketlerindedir, yani: apt-get install xhprof

XHprof'u kendiniz de oluşturabilirsiniz.

Profil oluşturmayı etkinleştirme

Diyelim ki aşağıdaki koda sahip bir komut dosyamız var:

uygulamak ();

XHprof ile biraz profilleme yapalım. Bunu yapmak için, bu sayfada yapmanız gerekenler:

  1. Profil oluşturucuyu en baştan etkinleştirin.
  2. Programın en sonunda profil oluşturucuyu durdurun ve alınan verileri kaydedin.

Bunun gibi görünecek:

# Profil oluşturucuyu başlatxhprof_enable (XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); # Profil oluşturucuyu açtıktan sonra programı çalıştırın uygulamak (); # Programı çalıştırdıktan sonra profil oluşturucuyu durdurun$ xhprof_data = xhprof_disable();

# Profil oluşturma sonucunu $ xhprof_data değişkenine kaydedin

  • İşlev xhprof_enable () argüman olarak bayrakları alır. İşlemci istatistiklerini sabitlemek için XHPROF_FLAGS_CPU, bellek için XHPROF_FLAGS_MEMORY, yerleşik işlevleri yok saymak için XHPROF_FLAGS_NO_BUILTINS.
  • xhprof_disable () profil oluşturucuyu kapatır ve toplanan istatistikleri döndürür.

Raporlar

Nesil

Toplanan veriler, raporlar oluşturmak için XHprof arayüzünde analiz edilebilir. Bunu yapmak için XHprof kaynaklarını indirmeniz gerekir: cd / var / www; wget http://pecl.php.net/get/xhprof-0.9.4.tgz gzip -d xhprof-0.9.4.tgz tar -xvf xhprof-0.9.4.tar

Bundan sonra, komut dosyasında değişiklik yapmanız gerekir:

include_once "/var/www/xhprof-0.9.4/xhprof_lib/utils/xhprof_lib.php"; include_once "/var/www/xhprof-0.9.4/xhprof_lib/utils/xhprof_runs.php"; $ xhprof_runs = yeni XHProfRuns_Default (); $ run_id = $ xhprof_runs-> save_run ($ xhprof_data, "test");

# Yeni kod, raporu GUI'de kullanmak üzere kaydeder

Raporlama arayüzü

Raporu görmek için sanal ana bilgisayarı /var/www/xhprof-0.9.4/xhprof_html klasörüne yapılandırmanız gerekir. Örneğin, Nginx'te:

Sunucu (sunucu_adı xh..9.4 / xhprof_html; dizin indeksi.php; konum ~ * \. (Php) $ (fastcgi_pass 127.0.0.1:9000; fastcgi_index indeks.php; fastcgi_params içerir; fastcgi_param SCRIPT_FILENAME $ document_root $fastcgi_script) -s yeniden yükle

Bundan sonra, bir rapor listesi görünecektir:

Tablo, ek bilgilerle birlikte bir sayfada gerçekleştirilen işlevlerin bir listesini içerir:

  • Çağrılar - fonksiyon çağrılarının sayısı ve yüzdesi.
  • dahil Duvar Süresi - iç içe geçmiş işlevlere sahip bir işlevin yürütme süresi.
  • Hariç Duvar Süresi - iç içe işlevler olmadan bir işlevin yürütme süresi.
  • dahil CPU - İç içe işlevlere sahip CPU zamanı.
  • Hariç CPU - İç içe işlevler olmadan CPU zamanı.
  • dahil MemUse - iç içe işlevlerle bellek tüketimi.
  • Hariç MemUse - iç içe işlevler olmadan bellek tüketimi.
  • dahil PeakMemUse - Yuvalanmış işlevlerle maksimum bellek tüketimi.
  • Hariç PeakMemUse - iç içe işlevler olmadan maksimum bellek tüketimi.

Grafik raporlar

Grafiksel bir rapor oluşturmak için, graphviz'in kurulu olduğundan emin olun: apt-get install graphviz

Kodun kaynak yoğun bölümleri sarı (orta) ve kırmızı (en zor) olarak vurgulanmıştır. Bunlar, programın geri kalanına göre çok fazla kaynak kullanan kod parçalarıdır. Bir yavaş işlev veya çok sayıda hızlı işlev çağrısı olabilir. Örneğimizde, fonksiyon str_replace () 262 arama için kırmızı ile işaretlenmiştir.

Toplu raporlar

XHprof arayüzü, aynı anda birden çok rapordan toplu bilgileri görüntülemenize de olanak tanır. Bunu yapmak için, run_id virgülle ayırarak geçirilir: http: //xh..php? 53a894f6d5d9b, 53a894fcf126e& kaynak = test

TL; DR

PHP'yi üretimde profillemek için XHprof kullanın.

Profil oluşturma sistemlerinin yardımıyla, php kodundaki hangi işlevlerin daha fazla CPU zamanı ve RAM tükettiği hakkında bilgi toplayabilir, yani bir php programında en yavaş ve en yoğun bellek kullanan yerleri belirleyebilirsiniz.

xhprof

XHProf - Facebook tarafından geliştirilen PHP profil oluşturucu.

Kurulum:

Yetenek kurulumu php-pear pecl kurulumu xhprof-0.9.4 echo "uzantı = xhprof.so"> /etc/php5/mods-available/xhprof.ini ln -s /etc/php5/mods-available/xhprof.ini / etc /php5/conf.d/xhprof.ini apachectl yeniden başlatma

Çalışmak için gerekli dosyalar dizinde bulunur / usr / paylaş / php... Ancak, hepsi değil, sadece php kodu ile. Raporları düzgün bir şekilde görüntülemek için jquery ve css gereklidir. Github'daki depodan edinilebilirler:

Git klonu https://github.com/facebook/xhprof.git

Bundan sonra, veri toplamanın başlaması gereken yerde php script koduna aşağıdaki satırı ekleyin:

Xhprof_enable (XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

Veri toplama parametreleri parantez içinde belirtilmiştir. Bu durumda, işlemci üzerindeki yük ve RAM kullanımı hakkında veriler toplanacaktır. Bir parametre daha mümkündür XHPROF_FLAGS_NO_BUILTINS yerleşik işlevlerde hangi verilerin toplanmadığını kullanırken.

$ xhprof_data = xhprof_disable(); include_once "xhprof_lib / utils / xhprof_lib.php"; include_once "xhprof_lib / utils / xhprof_runs.php"; $ xhprof_runs = yeni XHProfRuns_Default (); $ run_id = $ xhprof_runs-> save_run ($ xhprof_data, "xhprof_test"); echo "Rapor: http://domain.tld/xhprof_html/index.php? run = $ run_id & source = xhprof_test"; yankı "\ n";

Çizgide $ run_id tırnak işaretleri, isteğe bağlı olarak ayarlanabilen profilin adını gösterir.

İşlenen sonuç şöyle görünür:

parametreyi belirtirseniz XHPROF_FLAGS_NO_BUILTINS, ardından işlev çağrılarının sayısının önemli ölçüde azaldığını görebilirsiniz:

Tablo aşağıdaki bilgileri sağlar:

aramalar- fonksiyon çağrılarının sayısı,
duvar zamanı- dış kaynaklardan gelen yanıt için bekleme süresi de dahil olmak üzere işlevin toplam çalışma süresi,
İşlemci- işleme işlevlerine ne kadar zaman harcandığı,
MemKullanım- ne kadar RAM kullanıldı,
PeakMemKullanım- en yüksek bellek tüketimi.

Değiştiriciler şunlardır:

dahil- dahil - bu işlevden diğer işlevlere yapılan çağrıları dikkate alarak,
Hariç- özel - işlev çağrıları hariç.

Ayrıca toplam işlem süresi, kullanılan hafıza ve fonksiyon çağrılarının sayısı ile ilgili bilgiler tablonun üzerinde sunulmaktadır.

Ayrıca XHProf kırmızı ve yeşil ile gösterilen iki çalışma arasında farklı raporlar oluşturmanıza olanak tanır. Bu tür raporlar sayesinde, her kod değişikliğinden sonra iyileştirmelerin net bir resmini elde edebilirsiniz.

Böyle bir rapor almak için formun bir bağlantısını kullanmanız gerekir:

http: //domain.tld/xhprof_html/index.php?run1 = run_id1 & run2 = run_id2 ve kaynak = xhprof_test

nerede run_id1 ve run_id2- tanımlayıcıları başlatın.

yüklerseniz grafik:

Yetenek yüklemesi graphviz

Ayrıca php profiler xhprof için veritabanlarını kullanan üçüncü taraf web arayüzleri vardır:

xDebug

xHata Ayıklama Derick Rethans tarafından yazılmış bir profil oluşturma PHP kod hata ayıklayıcısıdır.

Kurulum:

Yum php5-xdebug yükleyin

Ardından yapılandırmayı düzenleriz:

Nano /etc/php5/mods-available/xdebug.ini

satırları ekleyerek:

Xdebug.profiler_enable = 1 xdebug.profiler_aggregate = Açık xdebug.profiler_output_dir = / tmp

Burada PHP profil oluşturucuyu açıyoruz ve profillerin yerleştirileceği dizini belirliyoruz. Profiller gibi isimlerle oluşturulur cachegrind.out *

Bir webgrind web istemcisi var: https://github.com/jokkedk/webgrind. Çok hızlı çalışmaz, ancak küçük profilleri hızlı bir şekilde görüntülemenizi sağlar. Aslında bu, github'dan klonlanması gereken PHP kodudur:

Git klonu https://github.com/jokkedk/webgrind.git

bir dizin oluşturulacak ağ değirmeni herhangi bir sitenin dizinine kopyalamanız ve tarayıcıdan erişmeniz gereken . Ayrıca, yapılandırma dosyasındaki grafiklerin Debian'da çalışması için config.php yürütülebilir dosyanın yolunu düzeltmeniz gerekir grafik... Şöyle görünmelidir:

Statik $ dotExecutable = "/ usr / bin / nokta";

Ayrıca, saat dilimini düzeltebilirsiniz:

Statik $ defaultTimezone = "Avrupa / Moskova";

Başlıkta bir profil seçebilir ve yerleşik işlevleri dikkate alıp almayacağınızı kutuyu işaretleyebilirsiniz. Tablonun kendisinde, işlevleri, çağrı sayısını, işlevin kendisinin çalışma süresini ve bekleme süresini dikkate alarak süreyi görebilirsiniz. Fonksiyonlara daha derine inmek için üçgen oka tıklamanız yeterlidir. Benim durumumda, yeterince büyük profillerle (birkaç megabayttan), sonuç beklentisi gereksiz yere yüksekti. Muhtemelen, yeterince büyük profiller için yerel görüntüleme programlarını kullanmak daha iyidir.

Grafik şöyle görünebilir:

Bunu not et ağ değirmeniüretim sunucularında kullanılmamalıdır, çünkü yetki verilmemektedir, ancak aynı zamanda php.ini dosyasındaki dosyaların koduna erişim vardır. Gerekirse en azından temel Apache yetkilendirmesini kullanın.

Linux altında olduğu gibi profilleri analiz etmek için programlar da vardır:

Profil oluşturma hakkında

Profil verileri, uygulamanızı geliştirmenize, yani belirli hedeflere ulaşmanıza, örneğin bellek tüketimini azaltmanıza, sayfa oluşturma süresini kısaltmanıza vb. yardımcı olabilir.

Profildeki bilgiler optimizasyon için başlangıç ​​noktasıdır: sonucun ne kadar süreyle üretildiğini, ne kadar bellek kullanıldığını ve kaç işlev çağrısı yapıldığını söyler. Daha ayrıntılı verilerle bu metrikleri iyileştirebilirsiniz.

Örneğin, bir çerçeve kullanıyorsanız, çerçevenin bazı işlevlerini kullanmak birkaç temel işlevin çağrılmasına yol açabilir. Bazı verileri birden çok kez okuyorsanız, sonucu bir değişkene kaydetmeye değer olabilir.

Ayrıca, profil oluşturucu PHP önbelleğe almanın nerede kullanılacağını anlamanıza yardımcı olabilir, örneğin APCu veya memcached.

Her şeyden önce, yürütülmesi en çok zaman alan işlevleri optimize etmeye değer. Her şey optimize edildikten ve iyileştirilecek başka bir şey yok gibi göründükten sonra, işlevleri çağrı sayısına göre sıralamaya ve düşürmeye çalışmaya değer. PHP hızlı olsa bile, fonksiyonları bu kadar sık ​​çağırmanız gerekip gerekmediğini düşünmeye değer mi?

Aşağıdaki durumlarla karşılaştığınızda, önbelleğe almayı düşünmeye değer:

  • Değişmez işlevler döngü içinde çağrılır,
  • Bazı içerikler iki kez oluşturulur,
  • Her seferinde değişmeyen içerik üretilir,
  • İçerik kullanılmasa bile oluşturulur.

Her şeyi önbelleğe almamalısınız, çünkü bellek de değerli bir kaynaktır. Sürekli eriştiğiniz verileri önbelleğe alın. Ayrıca, önbelleğe alma, tasarruf ettiğinden daha fazla kaynak harcıyorsa, önbelleğe alma pek mantıklı değildir.

Kodda önbelleğe almaya ek olarak, web sunucusunu () ve ayrıca istemci tarafında önbelleğe almayı unutmayın. Doğru başlıklar kullanılarak birçok istek sunucuya ulaşmadan çözülebilir.

Son güncelleme: 12.01.2019

Yayın: 01/09/2016


PhpStorm'u kullanarak, PHP kodunuzun performansını profil oluşturarak analiz edebilirsiniz. Profil oluşturma, bir programın yürütülmesiyle ilgili istatistikleri toplamanıza olanak tanır: yürütülmekte olan işlevlerin adları, her işlevin kaç kez yürütüldüğü, her işlevin yürütme süresi, her bir işlev içinde başka hangi işlevlerin çağrıldığı vb.

Bu bilgi size kodunuzun nerede geliştirilebileceğine dair bir ipucu verebilir.

Nasıl çalıştığını görelim.

1. Gerekli koşullar

PhpStorm IDE, Xdebug aracıyla toplanan profil bilgilerini kullanabilir. Bu uzantı sisteminizde kurulu ve yapılandırılmış olmalıdır. Daha fazla bilgi için Xdebug Kurulum Kılavuzuna bakın.

Harika bir taşınabilir sunucu platformu ve yazılım ortamı olan Open Server'ın bir kullanıcısıysanız, herhangi bir şey yapmanıza gerek yoktur - Xdebug uzantısı zaten kurulu ve bağlı.

Dikkat

Xdebug, IonCube ile uyumlu değildir. IonCube, PHP programlama dilinde yazılmış yazılımları korumaya yönelik bir araçtır (yardımcı programlar). IonCube uzantısını tamamen veya Xdebug kullanırken devre dışı bırakın. Bir başka olası sorun da, Xdebug'un varsayılan olarak 9000 numaralı bağlantı noktasına ayarlanmış olması ve Open Server tarafından da kullanılmasıdır. Bunu çözmek için, durumlardan birinde bağlantı noktası numarasını değiştirmelisiniz.

Burada açıklanan tüm eylemler, aşağıdaki teknolojik ortamda doğru beklenen sonuçlarla yeniden oluşturulmuştur:

2. Xdebug profil oluşturucuyu etkinleştirme

Profil oluşturma, uygulamayı çalıştırmaya biraz ek yük getirir ve diskte çok büyük miktarda bilgi üretir. Bu nedenle, Xdebug profil oluşturucuyu yalnızca gerektiğinde etkinleştirmek ve normal şekilde devre dışı bırakmak en iyisidir.

Xdebug, etkin php.ini dosyasındaki yönergeler aracılığıyla yapılandırılır. Profil oluşturucuyu herhangi bir şekilde etkinleştirirseniz, aşağıdaki yönergeyi yapılandırmanız gerekir:

xdebug.profiler_output_dir = / path / to / store / snapshots

Yönerge değeri, profil oluşturma dosyalarını kaydetmek için kullanılacak yolu belirtmelidir.

2.1. küresel olarak

Xdebug profil oluşturucuyu global olarak etkinleştirmek için aşağıdaki yönerge kullanılmalıdır:

xdebug.profiler_enable = 1

Bu şekilde, herhangi bir komut dosyasını her çalıştırdığınızda profil oluşturma yapılır. Profil oluşturucuyu yalnızca nadir durumlarda etkinleştirmek için bu seçeneği kullanmak uygundur.

2.2. Ek yorumlayıcı parametreleri kullanma

Profil oluşturucuyu, Konfigürasyonları Çalıştır / Hata Ayıklama penceresindeki ek yorumlayıcı seçeneklerini kullanarak etkinleştirebilirsiniz. Açmak için IDE ana menüsünün aşağıdaki öğelerini kullanın:

Komut Satırı bölümündeki seçenek (yukarıdaki ekran görüntüsünde kırmızı bir çerçeve ile işaretlenmiştir) Yorumlayıcı seçenekleri aşağıdaki satırı içermelidir:

D xdebug.profiler_enable = 1

Bu, profil oluşturucuyu genel olarak değil, belirli bir yapılandırma için kullanmanıza olanak tanır.

2.3. Özel GET / POST parametreleri veya çerez kullanma

Daha kontrol edilebilir profil oluşturma için aşağıdaki yönergeyi kullanın:

xdebug.profiler_enable_trigger = 1

Yönerge değeri 1 olarak ayarlanırsa, bir GET / POST parametresi veya XDEBUG_PROFILE adlı bir çerez ile bir komut dosyası yürütülürken, xdebug.profiler_enable ayarından bağımsız olarak profil oluşturma gerçekleştirilir.

Profil oluşturucuyu etkinleştirmek için bu seçenek en popüler olanıdır.

3. Profil oluşturma günlüklerini toplama

Profil oluşturma günlüklerini analiz edebilmek için önce onları toplamanız gerekir.

3.1. Web uygulamaları için profil oluşturma günlüklerini toplama

Web uygulamalarının profilini çıkarmak için genel olarak Xdebug profil oluşturucuyu kullanın veya istek üzerine başlatıp durdurun. Profil oluşturucuyu etkinleştirdikten sonra, veri - profil oluşturma günlüklerini toplamaya başlamak için uygulamayı bir tarayıcıda açın.

Performans sorunlarını analiz ederken, hata ayıklama için yer imleri veya tarayıcı uzantıları kullanmak, uygulamada gezinmenize ve yalnızca bir performans sorunu algılandığında profil oluşturucuyu çalıştırmanıza izin verdiği için çok iyi bir yaklaşımdır. Bu, hedef profil oluşturma günlüklerini toplamanıza olanak tanır.

3.2. CLI uygulamaları ve birim testleri için profil oluşturma günlüklerini toplama

CLI uygulamalarının ve birim testlerinin profilini çıkarmak için genel olarak Xdebug profil oluşturucuyu kullanın veya Çalıştırma / Hata Ayıklama Yapılandırmaları penceresini kullanarak profil oluşturucuyu etkinleştirmek için ayrı bir başlatma yapılandırması oluşturun. Ardından, profil oluşturma verilerini toplamak için CLI uygulamasını veya birim testlerini çalıştırın.

Birim testlerinde performans sorunlarını analiz ederken, yalnızca performans sorunları şüphesi olan birim testleri için ayrı bir çalıştırma yapılandırması oluşturmak iyi bir uygulamadır. Bu, hedef profil oluşturma günlüklerini toplamanıza olanak tanır.

4. Profil oluşturma günlüğünün açıklamasının analizi

Profil oluşturma günlüğüne daha yakından bakalım.

4.1. Profil oluşturma günlüğünü açma

Profil oluşturma günlüğünü açmak için IDE ana menüsünde aşağıdaki öğeleri kullanın: .

Mükemmel taşınabilir sunucu platformu Open Server'ın bir kullanıcısıysanız, profil oluşturma günlüğünü görüntülemek için platformlar arası Webgrind aracını da kullanabilirsiniz. Açık Sunucu ana menüsünün aşağıdaki öğeleri aracılığıyla bulunabilir. [İsteğe bağlı → PHP profil oluşturucu].

Profil oluşturma günlükleri, yapılandırılmış xdebug.profiler_output_dir yönergesine göre bir klasöre kaydedilir. Oluşturulan dosya adı her zaman cachegrind.out ile başlar. ve ya PHP ya da web sunucusu işlem kimliği ya da profili oluşturulmakta olan betiğin bulunduğu dizinin crc32 karması ile biter.


4.2. Yürütme İstatistikleri Sekmesi

Yürütme İstatistikleri sekmesinde, çağrılan her işlevin yürütme ölçümlerinin bir özetini görüntüleyebilirsiniz. Tüm dosyaları, işlev çağrılarını, kaç kez çağrıldıklarını ve her bir işlevin zamanını (mutlak ve göreli) görebilirsiniz.

Üst ızgara çeşitli ölçümleri görüntüler:

  • Kendi Süresi - bir işlevin kodunu yürütmek için harcadığı süre (diğer işlevlere yapılan çağrılar hariç).

Alt ızgarada iki sekme görüntülenir: Arayanlar (çağrılan) - komut dosyasının buraya çağırdığı işlevler ve Arayanlar (arayanlar) - komut dosyasının çağrıldığı yer. Burada da farklı metrikleri görebilirsiniz:

  • Zaman - Toplam yürütme süresi.
  • Aramalar - arama sayısı.

Çok sayıda kendi yürütme süresine veya çok sayıda çağrıya sahip işlevlerin kesinlikle test edilmesi gerekecektir.

4.3. Çağrı Ağacı Sekmesi

Çağrı Ağacı sekmesi, kodunuzun yürütme yollarını görüntüler. Burada, her bir işlevin yürütme süresi vb. hakkında daha ayrıntılı bilgi görebilirsiniz.

Üst ızgara, çağrı ağaçlarını (diğer işlevlerde çağrılan işlevler) ve diğer ölçümleri görüntüler:

  • Callable - Yürütülen dosya.
  • Zaman - Toplam yürütme süresi.
  • Aramalar - arama sayısı.

Alt ızgara iki sekme görüntüler: Arayanlar (çağrılan) - burada çağrılan işlevler ve Arayanlar (arayanlar) - işlevin çağrıldığı yer. Burada da farklı metrikleri görebilirsiniz:

  • Çağrılabilir (fonksiyon denir) - yürütülen fonksiyon.
  • Zaman - Toplam yürütme süresi.
  • Aramalar - arama sayısı.

Kontrol soruları

  1. PHP uygulamaları neden profillendirilir?
  2. Xdebug profil oluşturucuyu etkinleştirmenin kaç temel yolu vardır?
  3. CLI uygulamalarının ve birim testlerinin profilini oluştururken en iyi uygulama nedir?
  4. Profil oluşturma günlüklerini analiz etmek için hangi araçları kullanabilirsiniz?
  5. Profil oluşturma günlüğünü analiz ederken, ilk olarak hangi metriklere dikkat etmelisiniz?

Balakat Obşeslav. Suf. elde edilen balaka Suf yardımıyla sırayla oluşan "Chatterbox (ya)". -diğer adıyla) itibaren "Konuşma, gevezelik" (aynı temelden, ancak suf. -l- olarak , santimetre.). Sözler , toplar(çoğul) lehçelerde ve diğer Slavlarda "konuşma, gevezelik". dil. artık biliniyor. Santimetre. .

Rus dilinin okul etimolojik sözlüğü. Kelimelerin kökeni. - M.: Toy kuşu. N.M. Shansky, T.A. Bobrova. 2004 .

Diğer sözlüklerde "balakat" ın ne olduğunu görün:

    balak- konuşmak, sohbet etmek, kalyakat (Dahl) Bakınız... eşanlamlı sözlük

    BALAKAT- Balakat, balakay, balakat, çözülme. (bölge). Sohbet etmek, konuşmak. Ushakov'un açıklayıcı sözlüğü. D.N. Ushakov. 1935 1940 ... Ushakov'un Açıklayıcı Sözlüğü

    BALAKAT- Güneş ışığı. baljak Perm. sohbet, sohbet, raskolovarivat, kalyakat. Balakanya Çar gevezelik. Balakusha, balaka Balakar, soytarı ol, resmi soytarılar gibi şaka yap. Balakır erkek., Aşağı., Kaz., ... ... Dahl'ın Açıklayıcı Sözlüğü

    balak- gevezelik, saçmalık, Ukraynalı. balaçatı, blr. balakas, cila. baɫakac. Bayat veya balabolite; bkz. Bernecker 1, 40; Mi. EW 5. Başka bir sesli harf değişimi derecesi: ukr. mırıldanmaya çalış, Polonyalı. beɫknąc - aynı, Çekçe. bknouti; evlenmek Satranç, ... ... Max Vasmer tarafından Rus Dilinin Etimolojik Sözlüğü

    Balakat- nonsov. karşıdan karşıya geçmek ve aşılmamış. konuşma dili Konuş, sohbet et. Efremova'nın Açıklayıcı Sözlüğü. T.F. Efremova. 2000 ... Efremova'nın Rus dilinin modern açıklayıcı sözlüğü

    balak- balakay, balakay, balakay, balakay, balak, balak, balak, balakal, balakal, balakala, balakal, balakali, balakay, balakay, balak, balak, balak, balak, balak, balak, balak, balak, ... .. .Kelime biçimleri