分析PHP脚本最简单的方法是什么?

我喜欢在上面添加一些东西,告诉我所有函数调用的转储以及它们花了多长时间,但我也可以在特定的函数周围放一些东西。

我尝试了微时间功能:

$then = microtime();
myFunc();
$now = microtime();

echo sprintf("Elapsed:  %f", $now-$then);

但这有时会给我带来负面结果。另外,在我的代码中散布这些代码会带来很多麻烦。


当前回答

我认为你需要xdebug。在服务器上安装它,打开它,通过kcachegrind (linux)或wincachegrind (windows)输出,它会向你展示一些漂亮的图表,详细说明确切的时间,计数和内存使用(但你需要另一个扩展)。

这真的很震撼:D

其他回答

老实说,我认为使用NewRelic进行分析是最好的。

这是一个PHP扩展,似乎并不会减慢运行时,他们为你做监控,允许体面的钻。在昂贵的版本中,他们允许重钻(但我们负担不起他们的定价模式)。

尽管如此,即使使用免费/标准计划,大多数容易实现的目标也是显而易见和简单的。我也喜欢它可以给你一个关于DB交互的想法。

你们都应该检查一下这个新的php分析器。

https://github.com/NoiseByNorthwest/php-spx

它重新定义了php分析器收集和显示结果的方式。 PHP-SPX不只是输出特定函数调用的总数和执行它所花费的总时间,而是以一种完全可读的方式显示了请求执行的整个时间轴。下图是它提供的GUI界面。

我会大胆地尝试一下BlackFire。

这是我用puphpet把这个virtualBox放在一起,用来测试不同的php框架,如果需要,请随意分叉和/或分发:)

https://github.com/webit4me/PHPFrameworks

我喜欢使用phpDebug进行分析。 http://phpdebug.sourceforge.net/www/index.html

它输出使用的任何SQL以及所有包含的文件的所有时间/内存使用情况。显然,它在抽象的代码上工作得最好。

对于函数和类分析,我只使用microtime() + get_memory_usage() + get_peak_memory_usage()。

我认为你需要xdebug。在服务器上安装它,打开它,通过kcachegrind (linux)或wincachegrind (windows)输出,它会向你展示一些漂亮的图表,详细说明确切的时间,计数和内存使用(但你需要另一个扩展)。

这真的很震撼:D