有一個類可以統計腳本執行時間
發表于:2007-07-14來源:作者:點擊數:
標簽:
? php // class PHP _timer開始 class PHP_timer { // 用來收集腳本執行過程中的信息 var $points = array(); // 在腳本的開始處調用這個函數 function start() { // 請看后面的addmarker函數 $this-addmarker(Start); } // end function start() // 在腳本
<?
php// class
PHP_timer開始
class PHP_timer {
// 用來收集腳本執行過程中的信息
var $points = array();
// 在腳本的開始處調用這個函數
function start() {
// 請看后面的addmarker函數
$this->addmarker("Start");
}
// end function start()
// 在腳本的結束處調用這個函數
function stop() {
// 請看后面的addmarker函數
$this->addmarker("Stop");
}
// end function stop()
// 這個函數用來在腳本執行時增加一個標記
// 需要一個用來描述的名字
function addmarker($name) {
// 調用 jointime() 函數并將microtime() 的返回值傳遞過去
$markertime = $this->jointime(microtime());
// $ae 得到當前數組的大小,也就是當前的插入位置
// currently in the $points array
$ae = count($this->points);
// 在數組中存儲timestamp 和說明
$this->points[$ae][0] = $markertime;
$this->points[$ae][1] = $name;
}
// end function addmarker()
// 這個函數會處理從microtime() 返回的字串
function jointime($mtime) {
// 分解字串
$timeparts = explode(" ",$mtime);
// 連接兩個字串,并去除小數部分的0
$finaltime = $timeparts[1].substr($timeparts[0],1);
// 返回連接后的字串
return $finaltime;
}
// end function jointime()
// 這個函數簡單的顯示從開始到結束所需要的時間
function showtime() {
echo bcsub($this->points[count($this->points)-1][0],$this->points[0][0],6);
}
// end function showtime()
// 這個函數顯示所有的在腳本運行過程中收集到的信息
function debug() {
echo "Script execution debug information:";
echo "<table border=0 cellspacing=5 cellpadding=5>\n";
// 這個表格有3列 Marker name, Timestamp, difference
echo "<tr><td><b>Marker</b></td><td><b>Time</b></td><td><b>Diff</b></td></tr>\n";
// 第一行是沒有運行時間差的
echo "<tr>\n";
echo "<td>".$this->points[0][1]."</td>";
echo "<td>".$this->points[0][0]."</td>";
echo "<td>-</td>\n";
echo "</tr>\n";
// 從數組的元素1開始循環顯示,0已經在第一行顯示過了
for ($i = 1; $i < count($this->points);$i++) {
echo "<tr>\n";
echo "<td>".$this->points[$i][1]."</td>";
echo "<td>".$this->points[$i][0]."</td>";
echo "<td>";
// 顯示上下兩行的時間差
echo bcsub($this->points[$i][0],$this->points[$i-1][0],6);
echo "</td>";
echo "</tr>\n";
}
echo "</table>";
}
// end function debug()
}
// end class PHP_timer
?>
原文轉自:http://www.anti-gravitydesign.com