PHP Conference Japan 2024

posix_times

(PHP 4, PHP 5, PHP 7, PHP 8)

posix_times取得處理程序時間

說明

posix_times(): 陣列|false

取得目前 CPU 使用率的相關資訊。

參數

此函式沒有參數。

回傳值

傳回一個字串雜湊,其中包含目前處理程序 CPU 使用率的相關資訊。雜湊的索引為

  • ticks - 自重新開機後經過的時鐘滴答數。
  • utime - 目前行程使用的使用者時間。
  • stime - 目前行程使用的系統時間。
  • cutime - 目前行程及其子行程使用的使用者時間。
  • cstime - 目前行程及其子行程使用的系統時間。
函式失敗時會回傳 false

範例

範例 #1 posix_times() 的使用範例

<?php

$times
= posix_times();

print_r($times);
?>

上述範例的輸出會類似如下

Array
(
    [ticks] => 25814410
    [utime] => 1
    [stime] => 1
    [cutime] => 0
    [cstime] => 0
)

注意事項

警告

此函式使用上並不可靠,在時間值較高時可能會回傳負值。

新增註解

使用者貢獻的註解 4 則註解

murphy at nmc-online dot co dot uk
21 年前
我不確定為什麼,這可能只是我的問題,但在我的 FreeBSD 系統上使用
$time = posix_times();
$time['ticks'] 是一個巨大的值,與系統運行時間無關(我透過重新開機系統進行測試,該數字沒有變化)。
我檢查了我的計時器,它們每 10.000 毫秒滴答一次,我對回傳值進行了計算,結果顯示機器已經運行超過 200 天——它大約在一週前重新格式化過。
這可能與 FreeBSD 或 *BSD 有關,或者只是像我這樣的 *白癡,但在使用此函式之前請先檢查一下。
~
FreeBSD 5.1-R, Apache 2.0.46, PHP4.3.2
brain at winbot dot co dot uk
20 年前
在 FreeBSD 上無法正常運作。如上所述,時鐘滴答的間隔在不同的平台上有所不同。

對於系統運行時間,請考慮使用 uptime 命令或類似命令,取決於效能是否為問題。
not_rich_yet at hotmail dot com
21 年前
如果您希望輸出符合「文法規則」,請嘗試以下程式碼。例如,它會印出「1 分鐘」而不是「1 分鐘」,天數和小數也是如此

將以下程式碼放在頁面程式碼的 head 部分

<?php
function uptime() {
if (!
$times = posix_times() ) {
return (
"unknown");
} else {
$now = $times['ticks'];
$days = intval($now / (60*60*24*100));
$remainder = $now % (60*60*24*100);
$hours = intval($remainder / (60*60*100));
$remainder = $remainder % (60*60*100);
$minutes = intval($remainder / (60*100));
if (
$days == 1) {$writeDays = "day";} else {$writeDays = "days";}
if (
$hours == 1) {$writeHours = "hour"; } else {$writeHours = "hours";}
if (
$minutes == 1) {$writeMins = "minute";} else {$writeMins = "minutes";}
return (
"$days $writeDays, $hours $writeHours, $minutes $writeMins");
}
}
?>
然後將這段程式碼放在您想要顯示資訊的地方

<?php
print uptime();
?>
此致,

nry
rossz+php at vamos-wentworth dot org
22 年前
這個函式將會以人類可讀的字串格式返回系統運行時間,例如「172 天、18 小時、15 分鐘」。我沒有處理單數的情況,所以語法可能會有點不正確,例如 1 hours。

函式 uptime() {
如果 (!$times = posix_times()) {
返回 ("unknown");
} 否則 {
$now = $times['ticks'];
$days = intval($now / (60*60*24*100));
$remainder = $now % (60*60*24*100);
$hours = intval($remainder / (60*60*100));
(譯)$remainder = $remainder % (60*60*100); // 餘數計算,維持原樣即可
(譯)$minutes = intval($remainder / (60*100)); // 取分鐘數,維持原樣即可
(譯)return ("$days 天, $hours 小時, $minutes 分鐘");
}
}
To Top