gettimeofday() 回傳包含秒數與微秒數的關聯陣列,精度達微秒級,適合效能測量、日誌時間戳、高精度計時場景。
array gettimeofday(bool $return_float = false)
$return_float = false(預設):回傳關聯陣列。$return_float = true:回傳 float 秒數(含微秒小數)。| 鍵名 | 說明 | 範例 |
|---|---|---|
| sec | 自 1970-01-01 秒數 | 1261918156 |
| usec | 微秒部分 (0-999999) | 724964 |
| minuteswest | 時區偏移分鐘數(UTC 以西為正) | 0 |
| dsttime | 夏令時修正類型 (0/1) | 0 |
<?php
$now = gettimeofday();
echo "關聯陣列模式:\n";
foreach ($now as $k => $v) {
echo "$k => $v\n";
}
/* 輸出:
sec => 1261918156
usec => 724964
minuteswest => 0
dsttime => 0
*/
// 浮點數模式(直接得 Unix 時間戳含微秒)
$float = gettimeofday(true);
echo "Float: $float\n"; // 1261918156.724964
?>
$start = gettimeofday(true);
// 執行耗時操作
usleep(123456);
$end = gettimeofday(true);
echo "耗時: " . ($end - $start) * 1000 . " ms\n"; // 約 123.456 ms
| 函數 | 回傳類型 | 精度 | 適用場景 |
|---|---|---|---|
| microtime(true) | float 秒 | 微秒 | 通用高精度計時、效能分析 |
| gettimeofday(true) | float 秒 | 微秒 | 同 microtime,語意更明確 |
| gettimeofday() | 關聯陣列 | 微秒 | 需分離秒/微秒、時區資訊 |
| hrtime() (PHP 7.3+) | 奈秒 (int/array) | 奈秒 | 極高精度基準測試、避免系統時間調整影響 |
gettimeofday() 提供微秒級時間與時區資訊,是 microtime() 的補完。現代 PHP (7.3+) 建議優先使用 hrtime() 進行基準測試,避免 NTP 調整系統時間造成負數間隔。