分析PHP脚本最简单的方法是什么?
我喜欢在上面添加一些东西,告诉我所有函数调用的转储以及它们花了多长时间,但我也可以在特定的函数周围放一些东西。
我尝试了微时间功能:
$then = microtime();
myFunc();
$now = microtime();
echo sprintf("Elapsed: %f", $now-$then);
但这有时会给我带来负面结果。另外,在我的代码中散布这些代码会带来很多麻烦。
分析PHP脚本最简单的方法是什么?
我喜欢在上面添加一些东西,告诉我所有函数调用的转储以及它们花了多长时间,但我也可以在特定的函数周围放一些东西。
我尝试了微时间功能:
$then = microtime();
myFunc();
$now = microtime();
echo sprintf("Elapsed: %f", $now-$then);
但这有时会给我带来负面结果。另外,在我的代码中散布这些代码会带来很多麻烦。
当前回答
老实说,我认为使用NewRelic进行分析是最好的。
这是一个PHP扩展,似乎并不会减慢运行时,他们为你做监控,允许体面的钻。在昂贵的版本中,他们允许重钻(但我们负担不起他们的定价模式)。
尽管如此,即使使用免费/标准计划,大多数容易实现的目标也是显而易见和简单的。我也喜欢它可以给你一个关于DB交互的想法。
其他回答
如果减去microtimes会得到负的结果,请尝试使用参数为true的函数(microtime(true))。设置为true时,函数返回一个浮点数而不是字符串(如果调用时不带参数,则会这样做)。
你们都应该检查一下这个新的php分析器。
https://github.com/NoiseByNorthwest/php-spx
它重新定义了php分析器收集和显示结果的方式。 PHP-SPX不只是输出特定函数调用的总数和执行它所花费的总时间,而是以一种完全可读的方式显示了请求执行的整个时间轴。下图是它提供的GUI界面。
我会大胆地尝试一下BlackFire。
这是我用puphpet把这个virtualBox放在一起,用来测试不同的php框架,如果需要,请随意分叉和/或分发:)
https://github.com/webit4me/PHPFrameworks
PECL XHPROF看起来也很有趣。它有可点击的HTML界面,用于查看报告和相当简单的文档。不过我还没有测试过。
我喜欢使用phpDebug进行分析。 http://phpdebug.sourceforge.net/www/index.html
它输出使用的任何SQL以及所有包含的文件的所有时间/内存使用情况。显然,它在抽象的代码上工作得最好。
对于函数和类分析,我只使用microtime() + get_memory_usage() + get_peak_memory_usage()。