2010-10-28 18 views
6

Bir üretim sunucusunda yalnızca PHP sayfalarını yavaşlatmanın bir yolu var mı? Şu anda Profil yavaş PHP sayfaları üretimde

bir metin dosyasına Yavaş sayfaları kaydetmekte olduğunuzu, ancak daha fazla bilgi olmadan onlar yavaş (değil sürekli yavaş) konum neden söylemek zor.

Xdebug profilleyiciyi daha önce kullanmıştım, ancak bunu gerçekten de üretim sunucularımızda etkinleştirmek istemiyorum çünkü sanki saniyede 100 istek alıyor. Ayrıca Zend Platform kullandım, ancak bunu tekrar yüklemek istemiyorum.

+0

Eğer mysql kullanıyorsanız, "yavaş sorgu günlüğünün" etkin olduğundan emin olun. – c0rnh0li0

cevap

3

Her isteği sunan harcanan zamanı kaydetmek için Apache/HTTP Sunucusu günlükleri değiştirebilir. Örneğin, this guide'u izleyin. Ardından, her bir isteğin ne kadar sürdüğünü, yavaş sayfaları/istekleri tanımlamanızı ve nedenleri daha fazla analiz etmek için XDebug veya WebGrind'u kullanabilirsiniz.

Üretim sunucunuzda kolay ve mükemmel bir boşaltma yok.

+0

Harika, yorumlarda mod-log-firstbyte - http://code.google.com/p/mod-log-firstbyte/ adresinde bir bağlantı var. – Noodles

+0

Bunu düşünmüştüm, ama sunucunun sadece bir kaynağa hizmet etmek için harcadığı zamanı kaydetmek için daha da iyi. – Ghostpsalm

2

Zamanlayıcı ifadeleri yazabilirsiniz, bunları daraltmak için yavaş sayfaların bölümleridir. Daha sonra bazı veriler oluşturuldu, durulayın ve tekrarlayın. http://particletree.com/features/php-quick-profiler/

O ihtiyaçlarınızı

+0

PQP hoş ve güzel görünüyor, ancak bana sonradan detay verdi. Yine de teşekkürler. – Noodles

0

Bir üretim sunucusuna için yepyeni kütüphane temkinli olurdum uygun olabilecek:

define('START_TIME', microtime(true)); 
function timer() { 
    static $last; 
    $time_since_start = microtime(true) - START_TIME; 
    $time_since_last = microtime(true) - $last; 
    // Do something with $time vars 
    $last = microtime(true); 
} 

Ayrıca şuna bak. Hata ayıklama yaparken php.ini dosyasındaki * auto_prepend_file * ve * auto_append_file * yönergelerini kullanmayı seviyorum. Bu yöntemle yukarıda önerildiği gibi kolayca yapabilir ve her sayfa yükü için çok uygun bir zaman elde edebilirsiniz. saniyeler içinde ölçülen sadece yavaş yük sayfaları hakkında endişe duyuyorsanız

aşağıda bir otomatik olarak eklenir dosyada yaklaşık bitiş zaman sunucu isteği bulunduğu zamanı hızlı ve kirli bir çözümdür. Daha sonra sonucu bir db veya düz dosyada saklayabilirsiniz. php.in

auto_append_file = [location]/my_timer.php 

my_timer.php

define('TRIGGER_TIME_LOG','3'); // Minimum number of timer seconds to log page load 

$time = time() - $_SERVER['REQUEST_TIME']; // Page load time 

if($time >= TRIGGER_TIME_LOG) 
{ 
    /* 
    * DO LOGGING TO DB OR FLAT FILE HERE 
    */ 
} 
+0

Zaten yavaş sayfaları kaydettiğimizi söylediğim gibi, daha fazla ayrıntıya ihtiyacım var (hangi fonksiyonların yavaş olduğu gibi). – Noodles

+0

Üzgünüm, yanlış anladım. – DrPerdix

0

yılında

mesela ben webgrind project bakmak öneriyoruz. Profil başına sorgulamayı etkinleştirebilir, bu da üretim sunucunuzdan büyük bir performans etkisi olmadan profil verileri almanıza olanak tanır.

ben ... Bu bu en iyi çözüm olmadığını biliyoruz size

+0

Sorun, yavaş inişlerin nerede olduğunu bilmiyoruz.Zend Platform'un yaptığı gibi yavaş sayfaları belirleyecek bir şeye ihtiyacımız var, ama yılda binlerce dolara mal olmayacak bir şey. – Noodles

0

yardımcı olacağını umuyoruz, ancak

Sen başlangıç ​​ve bitiş zamanı ile birlikte, sahip her işlemi günlüğe bir yardımcı sınıf oluşturabilir

. Tüm işlem için zaten yaptığınızı biliyorum, ancak her bir işlev için başlangıç ​​ve bitiş için "Profiler :: logtime (FUNC)";