多个PHP页面运行是相互之间是不会干扰的,所以开始运行时取microtime(),结束时再取,相减就是运行时间。
解决方案 »
- php的调用命令行执行
- 如何让层不随着屏幕的分辨率的改变而改变
- 各位同行,最近准备跟公司签合同。我想了解同行的待遇。
- 在php中session可以用files, mysql, apc, eaccelerator, memcache, shmop几种方式保存,你了解哪个
- 专家预言:PHP将比Java更受开发人员欢迎
- PHP 递归程序的问题
- 怎么实现能查询车票或机票的功能?
- 请教:PHP模板到底哪个更好一些啊
- 在linux 下 php 连接 ms sql 的问题?
- asp和php之间登录的问题
- php的update语句怎么写?
- 如何用php写一个像phpmyadmin一样可以备份(导入)数据的程序呀?
尤其是当PHP页面进行一些耗时的处理(如访问数据库)时,时间占用还是比较大的。
由于服务器处理脚本时是多线程的,即可以同时运行多个脚本。各个脚本自然是轮流地被分配到CPU时间片,那么计算单个PHP脚本的运行时间采用以上方式就不那么准确了。
难道服务器会因为一个PHP脚本访问数据库时延时而暂停或者不运行其它PHP脚本吗?那样不就编程单线程了吗?
另外,经过测试,还发现显示的时间和网络速度有关。当网络繁忙,导致页面显示速度较慢时,显示的运行时间也会延长。
硬盘转速慢
cpu执行速度慢
内存太小
用cgi模式运行
等等呀!
而且如果在半夜网络空闲的时候测试,速度明显地快。这更说明是服务器繁忙造成页面运行时间延长的结果啊
class timer {
var $StartTime = 0;
var $StopTime = 0;
var $TimeSpent = 0; function start(){
$this->StartTime = microtime();
} function stop(){
$this->StopTime = microtime();
} function spent() {
if ($this->TimeSpent) {
return $this->TimeSpent;
} else {
$StartMicro = substr($this->StartTime,0,10);
$StartSecond = substr($this->StartTime,11,10);
$StopMicro = substr($this->StopTime,0,10);
$StopSecond = substr($this->StopTime,11,10);
$start = doubleval($StartMicro) + $StartSecond;
$stop = doubleval($StopMicro) + $StopSecond;
$this->TimeSpent = $stop - $start;
return substr($this->TimeSpent,0,8)."sec";
}
} // end function spent(); } //end class timer; //这里是一个简单的例子:
$timer = new timer;
$timer->start();
$temp=0;
for($i=0;$i<1000;$i++) for($j=0;$j<$i;$j++) $temp ++;
$timer->stop();
echo "run $temp times,time ".$timer->spent();
%>