有一個類可以統計腳本執行時間

發表于: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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97