如何在 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数据库中的更改?