大家可通常用的microtime()獲取頁(yè)面開始和結(jié)束時(shí)的時(shí)間并相減的話,計(jì)算結(jié)果是頁(yè)面運(yùn)行 所經(jīng)歷的一段時(shí)間,但這并不一定是該頁(yè)面自身運(yùn)行的時(shí)間
實(shí)例代碼如下:
- <?php
- //實(shí)例:計(jì)算頁(yè)面運(yùn)行時(shí)加載時(shí)間
- //分析:頁(yè)面打開時(shí)獲取一個(gè)時(shí)間,加載完成時(shí)獲取一個(gè)時(shí)間,運(yùn)行時(shí)間即二者之差
- //1.自定義函數(shù)
- function fn(){
- list($a,$b) = explode(' ',microtime()); //獲取并分割當(dāng)前時(shí)間戳和微妙數(shù),賦值給變量
- return $a+$b;
- }
- //2.獲取開始時(shí)間
- $start_time = fn();
- //5.加載過程
- for($i=0;$i<10000000;$i++){
- // do nothing;
- }
- //3.獲取結(jié)束時(shí)間
- $end_time = fn();
- //4.計(jì)算差值
- echo $end_time-$start_time;
- //5.格式化輸出
- echo '<br />';
- $t = $end_time-$start_time;
- echo round($t,2);
- ?>
使用microtime()獲取頁(yè)面開始和結(jié)束時(shí)的時(shí)間并相減的話,計(jì)算結(jié)果是頁(yè)面運(yùn)行
所經(jīng)歷的一段時(shí)間,但這并不一定是該頁(yè)面自身運(yùn)行的時(shí)間.因?yàn)榭赡艽嬖诙鄠€(gè)PHP腳
本頁(yè)面共同執(zhí)行的情況,所以我覺得那個(gè)方法是不準(zhǔn)確的
下面從網(wǎng)上找到一個(gè)關(guān)于php中計(jì)算頁(yè)面程序運(yùn)行時(shí)間的實(shí)例有需要的朋友可參考一下.
最近寫了一個(gè)程序運(yùn)行的時(shí)間計(jì)算類,供大家參考:
實(shí)例代碼如下:
- class Timer {
- private $StartTime = 0;//程序運(yùn)行開始時(shí)間
- private $StopTime = 0;//程序運(yùn)行結(jié)束時(shí)間
- private $TimeSpent = 0;//程序運(yùn)行花費(fèi)時(shí)間
- function start(){//程序運(yùn)行開始
- $this->StartTime = microtime();
- }
- function stop(){//程序運(yùn)行結(jié)束
- $this->StopTime = microtime();
- }
- function spent(){//程序運(yùn)行花費(fèi)的時(shí)間
- if ($this->TimeSpent) {
- return $this->TimeSpent;
- } else {
- list($StartMicro, $StartSecond) = explode(" ", $this->StartTime);
- list($StopMicro, $StopSecond) = explode(" ", $this->StopTime);
- $start = doubleval($StartMicro) + $StartSecond;
- $stop = doubleval($StopMicro) + $StopSecond;
- $this->TimeSpent = $stop - $start;
- return substr($this->TimeSpent,0,8)."秒";//返回獲取到的程序運(yùn)行時(shí)間差
- }
- }
- }
- $timer = new Timer();
- $timer->start();
- //...程序運(yùn)行的代碼
- $timer->stop();
- echo "程序運(yùn)行時(shí)間為:".$timer->spent();
再看簡(jiǎn)化程序 計(jì)算頁(yè)面加載時(shí)間
實(shí)例代碼如下:
- <?php
- class runtime
- {
- var $StartTime = 0;
- var $StopTime = 0;
- function get_microtime()
- {
- list($usec, $sec) = explode(' ', microtime());
- return ((float)$usec (float)$sec);
- }
- function start()
- {
- $this->StartTime = $this->get_microtime();
- }
- function stop()
- {
- $this->StopTime = $this->get_microtime();
- }
- function spent()
- {
- return round(($this->StopTime - $this->StartTime) * 1000, 1);
- }
- }
- //實(shí)例開始
- $runtime= new runtime;
- $runtime->start();
- //你的代碼開始
- $a = 0;
- for($i=0; $i<1000000; $i )
- {
- $a = $i;
- }
- //你的代碼結(jié)束
- $runtime->stop();
- echo "頁(yè)面執(zhí)行時(shí)間: ".$runtime->spent()." 毫秒";
- ?>
新聞熱點(diǎn)
疑難解答