分析PHP代码

时间:2020-03-06 14:43:26  来源:igfitidea点击:

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

是否有任何允许这样做的预制工具,还是我只能使用microtime并构建自己的性能分析框架?

解决方案

看一下xdebug,它可以进行深度分析。这是有关如何使用xdebug的说明。

Xdebug's Profiler is a powerful tool
  that gives you the ability to analyze
  your PHP code and determine
  bottlenecks or generally see which
  parts of your code are slow and could
  use a speed boost. The profiler in
  Xdebug 2 outputs profiling information
  in the form of a cachegrind compatible
  file.

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

否则,我们可以在Linux上使用kcachegrind或者它的较小的衍生版本wincachegrind。这两个应用程序都将读取xdebug的探查器输出文件,并对它们进行汇总,以供我们查看。

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

我曾经看过Zend Core的屏幕录像。看起来不错,但实际上要花钱,我不知道这对我们来说不是一个问题。

xdebug的分析功能非常好。如果可以将其保存为valgrind格式的输出,则可以使用KCachegrind或者Wincachegrind之类的内容来查看调用图,如果我们是直观的人,则可以更轻松地了解正在发生的事情。

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

Zend Studio中内置的探查器非常易于使用。我们只需点击浏览器工具栏上的一个按钮,BAM就会拥有代码配置文件。也许不如CacheGrind转储那么深入,但是它对我来说一直足够好。

我们确实也需要设置Zend Platform,但这很简单而且免费供开发使用,尽管如此,我们仍然必须支付Zend Studio许可证的费用。

实际上,上周我已经做了一些优化工作。 XDebug确实是必经之路。

只需将其启用为扩展名(由于某种原因,它将无法在我的Windows计算机上与ze_extension一起使用),使用xdebug.profiler_enable_trigger = On设置php.ini,并使用XDEBUG_PROFILE = 1调用普通网址作为获取或者发布变量来描述该请求。没有比这更简单的了!

另外,我真的可以推荐webgrind,这是一个基于网络(php)的Google Summer Of Code项目,可以读取和解析调试输出文件!

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

除了具有非常强大的实时调试功能外,NuSphere(www.nusphere.com)的PhpED还具有内置的探查器,可以在IDE内部单击即可运行。

这是一个不错的提示。

当我们使用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';}