如何在 PHP 中跟踪慢代码

Posted

技术标签:

【中文标题】如何在 PHP 中跟踪慢代码【英文标题】:How to track down slow code in PHP 【发布时间】:2014-03-06 06:37:23 【问题描述】:

我在我的 Ubuntu 服务器上安装了一个开源 php 项目并让它运行。但是,页面加载速度极慢。连接到 mysql 数据库的 phpinfo() 页面和基本测试页面都加载得非常快。这个开源代码中有大量的包含文件、日志文件和一些 curl 调用。我可以使用哪些策略/工具来追踪缓慢的根源?

【问题讨论】:

显然有人(非开发人员?)投票结束此问题为“离题:推荐或查找工具、库或最喜欢的非现场资源”。如果有一个可以说是合适的选择 - 但没有,并且知道如何调试/分析代码肯定是 SO 的主题。 systemsarchitect.net/wp-content/uploads/2013/04/… @symcbean 多么不相关 =)。 除了标签之外,这与 cake 有什么关系?开源项目可以是任何东西。 【参考方案1】:

您需要分析存在性能问题的页面。可以使用 php-extension xdebug 和 kcachegrind 来完成。

按照以下步骤操作:

    通过sudo apt-get install php5-xdebug在你的Ubuntu服务器上安装php5-xdebug包。 配置 xdebug.profiler_enable_trigger 参数。看official manual。 在本地计算机上安装 kcachegrind 包:sudo apt-get install kcachegrind。 使用GET 参数XDEBUG_PROFILE=1 启动慢速页面。见related question。 将生成的配置文件日志复制到本地计算机并在 kcachegrind 中打开。

一些注意事项:

安装 php5-xdebug 软件包后,您需要重新启动 http-server(或 php-fpm 守护程序。取决于您服务器上安装的软件)。 分析过程的正确位置是测试环境,而不是生产环境。

【讨论】:

【参考方案2】:

您可以使用 xdebug 并通过分析器运行它。您可以通过 webgrind 可视化分析器结果。

以下教程和工具会很有用:

http://www.xdebug.org/docs/profiler https://github.com/jokkedk/webgrind/wiki

【讨论】:

【参考方案3】:

安装调试工具包

确定的答案是使用 xdebug 分析,它可以为您提供大量关于正在发生的事情的信息。不过也有DebugKit。

DebugKit 是任何 CakePHP 开发人员的必备工具,而且非常易于安装(它只是一个插件)。

与问题最相关的功能是计时器面板:

了解请求的哪一部分速度较慢,可以让您将注意力集中在问题所在。

【讨论】:

以上是关于如何在 PHP 中跟踪慢代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在不刷新php页面的情况下跟踪mysql数据库中的更改?

如何创建跟踪 JavaScript 代码,如基于 Javascript 的谷歌分析?

PHP如何跟踪关联数组中的顺序?

PHP 如何排查 PHP 网站运行速度慢的原因

mysql慢查询

php 适用于WP的Google Analytics信息中心(GADWP)::如何排除显示跟踪代码的特定网页