2008-09-25 90 views
33

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

是否有任何预制工具允许此操作,或者我坚持使用microtime,并构建自己的分析框架?

+1

的[剖析PHP脚本最简单的方法]可能重复( http://stackoverflow.com/questions/21133/simplest-way-to-profile-a-php-script) – 2012-03-21 16:10:24

回答

42

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

只启用它作为一个扩展(由于某种原因,它不会用我的Windows机器上ze_extension工作),设置您与xdebug.profiler_enable_trigger的php.ini =上,并与XDEBUG_PROFILE = 1作为调用您的正常网址获取或发布变量来描述该请求。没有什么比这更简单!

此外,我真的可以推荐webgrind,一个基于Web的(PHP)谷歌夏季代码项目,可以读取和解析您的调试输出文件!

+0

Windows机器上的webgrind的替代品:Wincachegrind(一款桌面应用程序)。 – 2011-08-18 07:11:55

6

看看xdebug,它允许深入剖析。和here's an explanation的如何使用xdebug。

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

荣誉给SchizoDuckiementioningWebgrind。这是我听到的第一个。非常有用(+1)。

否则,您可以在Linux或其较小衍生产品wincachegrind上使用kcachegrind。这两款应用程序都会读取xdebug的分析器输出文件并对其进行汇总以供您欣赏。

1

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

3

我曾经看过一个屏幕投影Zend Core。看起来不错,但它实际上是花钱,我不知道这对你是否是个问题。

2

xdebug的分析功能相当不错。如果你用valgrind格式保存输出,你可以使用KCachegrind或Wincachegrind来查看调用图,如果你是一个可视化类型的人,可以更容易地解决发生的事情。

3

XDebug很不错,但它不那么容易使用或设置国际海事组织。

内置于Zend Studio中的分析器非常易于使用。您只需点击浏览器工具栏上的按钮,即可获得您的代码配置文件。或许不像CacheGrind转储那么深奥,但它对我来说总是够用的。

你确实需要安装Zend平台,但是这对于开发使用来说是直接和免费的 - 尽管如此,你仍然需要为Zend Studio许可证付费。

+3

三年半了,我现在不同意自己。 Facebook已经开源了一个名为XHProf的分析工具,它非常好,很轻便,并且足够容易安装和运行 – 2012-02-28 15:48:09

0

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

2

除了拥有严重强大的实时调试功能,来自NuSphere(www.nusphere.com)的PhpED还有一个内置的分析器,可以在IDE内单击一下运行。

7

这是一个不错的提示。

当您使用了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';}