2010-10-28 22 views
6

在生产服务器上是否存在只缓存PHP页面的配置文件的方法?配置文件生产缓慢的PHP页面

目前我们将慢速页面记录到文本文件中,但没有更多信息,很难说为什么它们很慢(不一定很慢)。

我以前使用过Xdebug分析器,但我真的不想在生产服务器上启用它,因为我们很可能每秒获得100个请求。我也用过Zend Platform,但我不想再安装它。

+0

如果您使用的是mysql,请确保“慢速查询日志”处于活动状态。 – c0rnh0li0 2010-11-22 20:33:59

回答

3

您可能会改变您的Apache/HTTP服务器日志以记录每次请求所花费的时间。例如,按照this guide。然后,您可以收集每个请求需要多长时间的数据,确定慢速页面/请求,并使用XDebugWebGrind来进一步分析原因。

简单,不会对生产服务器造成很大影响。

+0

真棒,在mod-log-firstbyte的注释中有一个链接 - http://code.google.com/p/mod-log-firstbyte/它应该记录到apache日志处理时间。 – Noodles 2010-11-25 04:23:30

+0

我不能说我已经想到了这一点,但更好的是只记录你的服务器本身用来提供资源的时间。 – Ghostpsalm 2010-11-25 05:38:39

2

你可以写定时器语句是慢速页面的一部分来缩小它。然后一旦建立了一些数据,冲洗并重复。

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/

它可能满足您的需求

+0

PQP看起来不错,漂亮,但它并没有真正给我以后的细节。不管怎么说,还是要谢谢你。 – Noodles 2010-10-29 04:39:39

0

我会持怀疑态度的一个生产服务器的一个全新的图书馆。当我正在调试时,我喜欢在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 
    */ 
} 
+0

正如我所说我们已经在记录缓慢的页面,我只需要更多的细节(比如哪个函数很慢)。 – Noodles 2010-10-29 04:37:00

+0

对不起,我误解了。 – DrPerdix 2010-10-29 14:08:55

0

我建议你看一看的webgrind project。您可以激活每个查询的分析,这可能允许您从生产服务器获取分析数据,而不会对性能产生巨大影响。

我希望这将有助于你

+0

问题是我们不知道缓慢起伏的地方。我们确实需要一些能够识别像Zend Platform这样慢速页面的东西,但是每年不会花费数千美元。 – Noodles 2010-11-23 04:13:33

0

我知道这是不是最好的解决办法,但是......

您可以创建一个辅助类来记录每一个你有过程,有开始和结束时间一起。我知道你已经完成了整个过程,但是对于每个函数的开始和结束,你可以添加一个“Profiler :: logtime(FUNC)”;