分析PHP脚本最简单的方法是什么?
我喜欢在上面添加一些东西,告诉我所有函数调用的转储以及它们花了多长时间,但我也可以在特定的函数周围放一些东西。
我尝试了微时间功能:
$then = microtime();
myFunc();
$now = microtime();
echo sprintf("Elapsed: %f", $now-$then);
但这有时会给我带来负面结果。另外,在我的代码中散布这些代码会带来很多麻烦。
分析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()。