在生产服务器上是否存在只缓存PHP页面的配置文件的方法?配置文件生产缓慢的PHP页面
目前我们将慢速页面记录到文本文件中,但没有更多信息,很难说为什么它们很慢(不一定很慢)。
我以前使用过Xdebug分析器,但我真的不想在生产服务器上启用它,因为我们很可能每秒获得100个请求。我也用过Zend Platform,但我不想再安装它。
在生产服务器上是否存在只缓存PHP页面的配置文件的方法?配置文件生产缓慢的PHP页面
目前我们将慢速页面记录到文本文件中,但没有更多信息,很难说为什么它们很慢(不一定很慢)。
我以前使用过Xdebug分析器,但我真的不想在生产服务器上启用它,因为我们很可能每秒获得100个请求。我也用过Zend Platform,但我不想再安装它。
您可能会改变您的Apache/HTTP服务器日志以记录每次请求所花费的时间。例如,按照this guide。然后,您可以收集每个请求需要多长时间的数据,确定慢速页面/请求,并使用XDebug或WebGrind来进一步分析原因。
简单,不会对生产服务器造成很大影响。
真棒,在mod-log-firstbyte的注释中有一个链接 - http://code.google.com/p/mod-log-firstbyte/它应该记录到apache日志处理时间。 – Noodles 2010-11-25 04:23:30
我不能说我已经想到了这一点,但更好的是只记录你的服务器本身用来提供资源的时间。 – Ghostpsalm 2010-11-25 05:38:39
你可以写定时器语句是慢速页面的一部分来缩小它。然后一旦建立了一些数据,冲洗并重复。
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);
}
也看看这个:http://particletree.com/features/php-quick-profiler/
它可能满足您的需求
PQP看起来不错,漂亮,但它并没有真正给我以后的细节。不管怎么说,还是要谢谢你。 – Noodles 2010-10-29 04:39:39
我会持怀疑态度的一个生产服务器的一个全新的图书馆。当我正在调试时,我喜欢在php.ini中使用* auto_prepend_file *和* auto_append_file *指令。你可以很容易地按照上面用这种方法建议的那样,并且为每个页面加载得到一个非常准确的时间
如果你担心以秒为单位只能缓慢地加载网页,这里是一个快速和肮脏的解决方案,减去大约完成时间的服务器请求时间在自动附加文件。然后,您可以将结果存储在数据库或平面文件中。
例如,在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
*/
}
我建议你看一看的webgrind project。您可以激活每个查询的分析,这可能允许您从生产服务器获取分析数据,而不会对性能产生巨大影响。
我希望这将有助于你
问题是我们不知道缓慢起伏的地方。我们确实需要一些能够识别像Zend Platform这样慢速页面的东西,但是每年不会花费数千美元。 – Noodles 2010-11-23 04:13:33
我知道这是不是最好的解决办法,但是......
您可以创建一个辅助类来记录每一个你有过程,有开始和结束时间一起。我知道你已经完成了整个过程,但是对于每个函数的开始和结束,你可以添加一个“Profiler :: logtime(FUNC)”;
如果您使用的是mysql,请确保“慢速查询日志”处于活动状态。 – c0rnh0li0 2010-11-22 20:33:59