36

我想找到一种方法来确定 PHP 中的每个函数以及 PHP 中的每个文件运行多长时间。我有一个旧的遗留 PHP 应用程序,我试图在其中找到“粗糙点”,所以我想客观地找出哪些例程和页面需要很长时间才能加载。

是否有任何预制工具可以做到这一点,或者我是否坚持使用 microtime 并构建自己的分析框架?

4

9 回答 9

43

上周我实际上做了一些优化工作。XDebug 确实是要走的路。

只需将其作为扩展启用(由于某种原因,它不适用于我的 Windows 机器上的 ze_extension),使用 xdebug.profiler_enable_trigger=On 设置您的 php.ini 并使用 XDEBUG_PROFILE=1 作为获取或发布调用您的正常 url变量来描述这个请求。没有什么比这更容易了!

另外,我真的可以推荐webgrind,一个基于 web 的 (php) google Summer Of Code 项目,它可以读取和解析您的调试输出文件!

于 2008-09-25T16:16:15.893 回答
8

这是一个很好的提示。

当您使用 XDebug 分析您的 PHP 时,设置 profiler_trigger 并在书签中使用它来触发 XDebug 分析器;)

javascript:if(document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';}
于 2010-07-28T18:18:36.960 回答
6

看看xdebug,它允许深入分析。这里是如何使用 xdebug的解释。

Xdebug 的 Profiler 是一个强大的工具,它使您能够分析您的 PHP 代码并确定瓶颈,或者通常查看您的代码的哪些部分很慢并且可以使用速度提升。Xdebug 2 中的分析器以 cachegrind 兼容文件的形式输出分析信息。

感谢SchizoDuckie提到 Webgrind。_ 这是我第一次听说它。非常有用(+1)。

否则,您可以在 linux 上使用kcachegrind或其较小的衍生版本wincachegrind。这两个应用程序都将读取 xdebug 的分析器输出文件并汇总它们以供您查看。

于 2008-09-25T14:30:04.727 回答
3

我曾经看过Zend Core的截屏视频。看起来不错,但实际上要花钱,我不知道这对你来说是否有问题。

于 2008-09-25T14:30:39.140 回答
3

XDebug 很好,但它不是那么容易使用或设置 IMO。

Zend Studio 内置的分析器非常易于使用。您只需点击浏览器工具栏上的一个按钮,然后BAM您就有了您的代码配置文件。ts 可能不如 CacheGrind 转储那么深入,但它对我来说总是足够好。

您还需要设置 Zend Platform,但这对于开发使用来说是直接且免费的——尽管您仍然需要为 Zend Studio 许可证付费。

于 2008-09-25T15:20:47.710 回答
2

如果您安装 xdebug 扩展,您可以将其设置为导出运行配置文件,您可以在 WinCacheGrind(在 Windows 上)中读取。我不记得在 Linux 上读取文件的应用程序的名称。

于 2008-09-25T14:30:38.550 回答
2

xdebug 的分析功能非常好。如果你得到它以 valgrind 格式保存输出,那么你可以使用 KCachegrind 或 Wincachegrind 之类的东西来查看调用图,如果你是一个视觉类的人,更容易弄清楚发生了什么。

于 2008-09-25T14:34:02.737 回答
2

除了具有非常强大的实时调试功能外,NuSphere (www.nusphere.com) 的 PhpED 还具有一个内置的分析器,只需在 IDE 中单击即可运行。

于 2008-10-15T22:02:48.700 回答
0

最简单的解决方案是使用 Zend Profiler,您不需要使用 Zend Platform,您可以直接在浏览器中运行它,它非常准确,并且具有您需要的最多功能,并且集成在 Zend Studio 中

于 2008-09-25T22:07:06.283 回答