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

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

我尝试了微时间功能:

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

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

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


当前回答

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

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

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

其他回答

对于基准测试,就像在您的示例中一样,我使用pear Benchmark包。你设置标记来测量。该类还提供了一些表示帮助程序,或者您可以根据自己的需要处理数据。

我实际上用__destruct方法将它包装在另一个类中。当脚本退出时,输出将通过log4php记录到syslog,因此我有很多性能数据可以使用。

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

这真的很震撼:D

PECL XHPROF看起来也很有趣。它有可点击的HTML界面,用于查看报告和相当简单的文档。不过我还没有测试过。

如果减去microtimes会得到负的结果,请尝试使用参数为true的函数(microtime(true))。设置为true时,函数返回一个浮点数而不是字符串(如果调用时不带参数,则会这样做)。

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

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

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