动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   PHP → 阅读文章

 看过google的搜索吗?搜索共花了多少时间?这里有一个类可以统计脚本执行时间的。

作者来源: 
阅读 数 552 人次 , 2006-4-18 17:22:00 


   <?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

?>   
 本文Tagsgoogle  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:版主所见所用过的最好的用PHP写的SMTP类,支持附件(多个),支持HTML。快来用吧!(作者:boss_ch)
· 下一篇:使用 php 4 加速 web 传输
· 给你一个JS实现列表连动的例子
· PHP语句中or的用法
· 网址:可扩展标记语言(XML)1.0中文版
· 用PHP调用数据库的存贮过程
· PHP找回密码机制流程


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077