猿问

分析PHP脚本的最简单方法

分析PHP脚本的最简单方法

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

我很乐意在上面添加一些东西,显示所有函数调用的转储,以及它们花了多长时间,但我也不介意在特定函数周围放置一些东西。

我试着用微时间职能:

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

但这有时会给我负面的结果。另外,在我的代码中洒上这些也是很麻烦的。


胡说叔叔
浏览 388回答 3
3回答

万千封印

你想要的x调试我认为。安装在服务器上,打开它,泵输出通过苦磨(适用于Linux)或风磨(对于windows),它将向您展示一些漂亮的图表,详细说明确切的时间、计数和内存使用情况(但您需要另一个扩展)。

大话西游666

不需要扩展,只需使用这两个函数进行简单的分析。//&nbsp;Call&nbsp;this&nbsp;at&nbsp;each&nbsp;point&nbsp;of&nbsp;interest,&nbsp;passing&nbsp;a&nbsp;descriptive&nbsp;stringfunction&nbsp;prof_flag($str){ &nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;$prof_timing,&nbsp;$prof_names; &nbsp;&nbsp;&nbsp;&nbsp;$prof_timing[]&nbsp;=&nbsp;microtime(true); &nbsp;&nbsp;&nbsp;&nbsp;$prof_names[]&nbsp;=&nbsp;$str;}//&nbsp;Call&nbsp;this&nbsp;when&nbsp;you're&nbsp;done&nbsp;and&nbsp;want&nbsp;to&nbsp;see&nbsp;the&nbsp;resultsfunction&nbsp;prof_print(){ &nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;$prof_timing,&nbsp;$prof_names; &nbsp;&nbsp;&nbsp;&nbsp;$size&nbsp;=&nbsp;count($prof_timing); &nbsp;&nbsp;&nbsp;&nbsp;for($i=0;$i<$size&nbsp;-&nbsp;1;&nbsp;$i++) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"<b>{$prof_names[$i]}</b><br>"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;sprintf("&nbsp;&nbsp;&nbsp;%f<br>",&nbsp;$prof_timing[$i+1]-$prof_timing[$i]); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"<b>{$prof_names[$size-1]}</b><br>";}下面是一个示例,在每个检查点使用描述调用prof_频标(),并在末尾调用prof_print():prof_flag("Start"); &nbsp;&nbsp;&nbsp;include&nbsp;'../lib/database.php'; &nbsp;&nbsp;&nbsp;include&nbsp;'../lib/helper_func.php';prof_flag("Connect&nbsp;to&nbsp;DB"); &nbsp;&nbsp;&nbsp;connect_to_db();prof_flag("Perform&nbsp;query"); &nbsp;&nbsp;&nbsp;//&nbsp;Get&nbsp;all&nbsp;the&nbsp;data &nbsp;&nbsp;&nbsp;$select_query&nbsp;=&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;data_table"; &nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;mysql_query($select_query);prof_flag("Retrieve&nbsp;data"); &nbsp;&nbsp;&nbsp;$rows&nbsp;=&nbsp;array(); &nbsp;&nbsp;&nbsp;$found_data=false; &nbsp;&nbsp;&nbsp;while($r&nbsp;=&nbsp;mysql_fetch_assoc($result)) &nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$found_data=true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rows[]&nbsp;=&nbsp;$r; &nbsp;&nbsp;&nbsp;}prof_flag("Close&nbsp;DB"); &nbsp;&nbsp;&nbsp;mysql_close();&nbsp;&nbsp;&nbsp;//close&nbsp;database&nbsp;connectionprof_flag("Done");prof_print();输出如下:启动&nbsp;&nbsp;&nbsp;0.004303连接到DB&nbsp;&nbsp;&nbsp;0.003518执行查询&nbsp;&nbsp;&nbsp;0.000308检索数据&nbsp;&nbsp;&nbsp;0.000009关闭DB&nbsp;&nbsp;&nbsp;0.000049已完成
随时随地看视频慕课网APP
我要回答