PHP MySQL yavaş sorgu günlüğüne eşdeğer?

4 Cevap php

Ben sitemde optimize üzerinde çalışıyorum, ve ben MySQL yavaş sorguları şimdi bir kaç gün boyunca oturum vardı, ama> 260M sorguları geçtikten sonra, sadece 6 yavaş sorguları açmış ve bu phpMyAdmin bana göre idam özel olanlar vardı. Ben yerine belirli sorguları daha kaynaklarını hogging belirli sayfalarını bulabilirsiniz böylece yavaş PHP sayfası yürütme süresini oturum şey varsa ben merak ediyorum.

4 Cevap

İlk olarak, bir profiler var ki, xdebug var, ama bu kod enjekte ve tarama hızı getiriyor beri, bir üretim makinasının o kullanmak olmaz. Olsa test ortamlarında, çok iyi.

Eğer verimli bir ortamda hızlarını ölçmek isterseniz, ben elle sadece ölçüm için olur. microtime() is the function for these things in PHP. Assuming you have a header.php and a footer.php which get called by all php scriptler:

# In your header.php (or tpl)
$GLOBALS['_execution_start'] = microtime(true);

# In your footer.php (or tpl)
file_put_contents(
    '/tmp/my_profiling_results.txt',
    microtime(true) - $GLOBALS['_execution_start'] . ':' . print_r($_SERVER, true) . "\n",
    FILE_APPEND
);

Böyle basit bir zamanlayıcı da komut sarın:

/*in your header or at the top of the page*/
$time_start = microtime(true); 

/* your script goes here */

/*in your footer, or at the bottom of the page*/
$time_end = microtime(true);
$time = $time_end - $time_start;   
echo "It took $time seconds\n";

Bu iki fonksiyon infaz ve havai gibi matematik bir nebze katacak unutmayın.

Eğer zamanlayıcı sona çağıran bir kapatma işlevi kayıt değil misiniz? http://us3.php.net/register%5Fshutdown%5Ffunction Bu şekilde sadece bir sorun olabileceğini düşünüyorum yerde Sayacı başlatmak gerekir.

Eğer PHP betikleri çalıştırmak için FastCGI kullanıyorsanız, ayrıca bir sözde "slowlog" destekler FastCGI Process Manager (FPM, php-fpm) kullanabilirsiniz.

Request_slowlog_timeout ve slowlog: Eğer yapılandırma seçenekleri ile (debian için bu /etc/php5/fpm/pool.d/www.conf içinde) php-fpm php yapılandırmasında etkinleştirebilirsiniz.

request_slowlog_timeout

The timeout for serving a single request after which a PHP backtrace will be dumped to the 'slowlog' file. A value of '0' means 'Off'. Available units: s(econds)(default), m(inutes), h(ours), or d(ays). Default value: 0.

slowlog

Yavaş istekleri için günlük dosyası. Varsayılan değer: # INSTALL_PREFIX # / log / php-fpm.log.slow.

dan http://php.net/manual/en/install.fpm.configuration.php

Ayrıca bakınız: http://php.net/manual/en/install.fpm.php ve http://rtcamp.com/tutorials/php/fpm-slow-log/