不需要扩展,只需使用这两个函数进行简单的分析。

// Call this at each point of interest, passing a de ive string
function prof_flag($str)
{
    global $prof_timing, $prof_names;
    $prof_timing[] = microtime(true);
    $prof_names[] = $str;
}

// Call this when you\'re done and want to see the results
function prof_print()
{
    global $prof_timing, $prof_names;
    $size = count($prof_timing);
    for($i=0;$i<$size - 1; $i++)
    {
        echo \"<b>{$prof_names[$i]}</b><br>\";
        echo sprintf(\"&nbsp;&nbsp;&nbsp;%f<br>\", $prof_timing[$i+1]-$prof_timing[$i]);
    }
    echo \"<b>{$prof_names[$size-1]}</b><br>\";
}

下面是一个示例,调用prof_flag(),每个检查点都有一个描述,最后是prof_print():

prof_flag(\"Start\");

   include \'../lib/data .php\';
   include \'../lib/helper_func.php\';

prof_flag(\"Connect to DB\");

   connect_to_db();

prof_flag(\"Perform query\");

   // Get all the data

   $select_query = \"SELECT * FROM data_table\";
   $result = mysql_query($select_query);

prof_flag(\"Retrieve data\");

   $rows = array();
   $found_data=false;
   while($r = mysql_fetch_assoc($result))
   {
       $found_data=true;
       $rows[] = $r;
   }

prof_flag(\"Close DB\");

   mysql_close();   //close data  connection

prof_flag(\"Done\");
prof_print();

输出看起来像这样:

开始
   0.004303 
连接到DB
   0.003518 
执行查询
   0.000308 
检索数据
   0.000009 
关闭DB
   0.000049 
完成

收藏 打印