今天跟同事閒聊,看到迴圈抓資料驗證再回傳有點慢,就在想有沒有可以測出執行時間之類的
就想說嘗試看看,一開始想各別用Date()去抓秒數,是可以,但是因為擷取出來都是整數,所以要是執行時間是零點幾秒(0.x)的呢
這樣計算出來,結果會顯示執行了0秒
而在搜尋之下,找到了microtime函數
microtime():函數返回當前Unix 時間戳和微秒數
使用方法:microtime ( $get_as_float )
$get_as_float:要是給予參數為TRUE,函數將返回一個浮點數
(參考資料:http://php.net/manual/en/function.microtime.php)
而在等等的範例裡,還有使用到兩個函數,sleep與usleep
sleep()與usleep():延遲執行
這兩個差異在,sleep($s)裡頭的$s是以秒計算,而usleep($s)裡頭的$s是以微秒為計算單位
(參考資料:
sleep:http://php.net/manual/en/function.sleep.php
usleep:http://php.net/manual/zh/function.usleep.php)
以下有一小段程式碼,供各位讀者參考:
「run_time.php」
<?php
$start_time = date("H")*3600+date("i")*60+date("s");
$start_time2 = microtime(true);
//執行的程式碼
sleep(2); //延遲sleep以秒計算
//usleep(1000); //延遲usleep以微秒計算
$end_time = date("H")*3600+date("i")*60+date("s");
$end_time2 = microtime(true);
echo "start_time:".$start_time."秒<br />";
echo "end_time:".$end_time."秒<br />";
$time_total = $end_time - $start_time;
echo "設定值為sleep(2),執行了:".$time_total."秒<br />";
//---------------------------
echo "<hr>";
echo "start_time2:".$start_time2."秒<br />";
echo "end_time2:".$end_time2."秒<br />";
$time_total2 = $end_time2 - $start_time2;
echo "設定值為sleep(2),執行了:".$time_total2."秒";
?>
輸出結果如圖所示: