PHP相当于MySQL';查询日志慢吗?

PHP相当于MySQL';查询日志慢吗?,php,mysql,optimization,Php,Mysql,Optimization,我正在优化我的站点,我已经让MySQL慢速查询登录了几天,但是在经历了>2600万次查询之后,它只记录了6次慢速查询,这些是我在phpMyAdmin上执行的特殊查询。我想知道是否有什么东西可以记录缓慢的PHP页面执行时间,以便我可以找到占用资源的某些页面,而不是特定的查询。您可以将脚本封装在一个简单的计时器中,如下所示: /*in your header or at the top of the page*/ $time_start = microtime(true); /* your sc

我正在优化我的站点,我已经让MySQL慢速查询登录了几天,但是在经历了>2600万次查询之后,它只记录了6次慢速查询,这些是我在phpMyAdmin上执行的特殊查询。我想知道是否有什么东西可以记录缓慢的PHP页面执行时间,以便我可以找到占用资源的某些页面,而不是特定的查询。

您可以将脚本封装在一个简单的计时器中,如下所示:

/*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";
请注意,这将增加两个函数执行和一点数学开销。

首先,有一个,它有一个探查器,但我不会在生产机器上使用它,因为它注入代码并使速度达到爬行速度。不过,对于测试环境来说非常好

如果您想在生产环境中测量速度,我只需要手动测量。是PHP中这些东西的函数。假设您有一个header.php和一个footer.php,所有php脚本都会调用它们:

# 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
);

您不能注册一个调用计时器结束的关机函数吗?这样,您只需在您认为可能有问题的地方启动计时器。

自动预结束文件和自动附加文件如何,
刚刚写了一篇文章

如果您使用FastCGI执行PHP脚本,您可以使用FastCGI进程管理器(FPM,PHP FPM),它也支持所谓的“slowlog”

您可以在php fpm的php配置中启用它(对于debian,它位于
/etc/php5/fpm/pool.d/www.conf
),配置选项为:request\u slowlog\u timeout和slowlog

请求\u慢行\u超时

为单个请求提供服务的超时,在此超时之后,PHP回溯将转储到“slowlog”文件。值“0”表示 “关”。可用单位:秒(默认)、米(分钟)、小时(小时)或 d(天)。默认值:0

慢吞吞

缓慢请求的日志文件。默认值:#安装#前缀#/log/php-fpm.log.slow


另请参见:和

可能是phpMyAdmin查询的优先级较低,这会导致它们显示为“慢”。我刚才提到的是,没有一个查询需要在站点上进行优化。如果您希望获得比公认答案更精确的度量,要找到文档中的瓶颈所在,您可以从PEAR中查看基准测试。它允许您在代码中设置标记以查找瓶颈。谢谢,这也可能非常有用。谢谢,您的第二个建议是个好主意。我希望能有办法实现自动化,但不用花太多力气,效果也一样好。哦,还有一件事要补充。应该将FILE_APPEND添加为一个标志,这样您就不会只获得日志中的最新访问权限。