分析PHP内联

时间:2010-05-28 11:46:26

标签: php profiling

我正在寻找一种在浏览器中配置我的php脚本的解决方案(而不是必须使用* cachegrind)

我刚才看到这个http://particletree.com/features/php-quick-profiler/,但我不知道它有多好(或准确)

提示/建议赞赏

4 个答案:

答案 0 :(得分:4)

xdebug生成cachegrind文件,因此您可能希望避免这种情况。我目前使用XHProf http://mirror.facebook.net/facebook/xhprof/doc.html,因为它包含一个很棒的Web界面,可以查看分析结果。

答案 1 :(得分:1)

您可以使用XDebug吗?如果是这样,您可以使用this technique,我认为它与任何分析器一样有效。

在分析器中,不要寻找定时测量的准确性。这通常是以牺牲找到问题的准确性为代价来购买的。

答案 2 :(得分:0)

我在不同的网站上使用了Benchmark,以便快速和轻松地使用简单的分析 - 它按预期工作:不是很好,但足以满足我的需求。

答案 3 :(得分:0)

我使用的代码与此一样简单。
只需$TIMER['mark']=microtime(TRUE);所有其他代码:

<?
$TIMER['start']=microtime(TRUE);
// some code
$TIMER['q1 start']=microtime(TRUE);
  $res=mysql_query($query);
$TIMER['q1 end']=microtime(TRUE);  
// some code
$TIMER['q2 start']=microtime(TRUE);
  $res=mysql_query($query);
$TIMER['q2 end']=microtime(TRUE);  
// some code
$TIMER['pagination']=microtime(TRUE);  
?>

然后是带结果的简单表:

<?
if ('127.0.0.1' === $_SERVER['REMOTE_ADDR']) {
  echo "<table border=1><tr><td>name</td><td>so far</td><td>delta</td><td>per cent</td></tr>";
  reset($TIMER);
  $start=$prev=current($TIMER);
  $total=end($TIMER)-$start;
  foreach($TIMER as $name => $value) {
    $sofar=round($value-$start,3);
    $delta=round($value-$prev,3);
    $percent=round($delta/$total*100);
    echo "<tr><td>$name</td><td>$sofar</td><td>$delta</td><td>$percent</td></tr>";
    $prev=$value;
  }
    echo "</table><>";
}
?>

它不像xDebug输出那么全面,但它可以找到瓶颈,我不再需要了。