PHP Conference Japan 2024

pcntl_getpriority

(PHP 5, PHP 7, PHP 8)

pcntl_getpriority取得任何行程的優先順序

說明

pcntl_getpriority(?int $process_id = null, int $mode = PRIO_PROCESS): int|false

pcntl_getpriority() 會取得 process_id 的優先順序。由於優先順序等級可能因系統類型和核心版本而異,請參閱系統的 getpriority(2) 使用手冊頁面以取得詳細資訊。

參數

process_id

如果為 null,則使用目前處理程序的處理程序 ID。

mode

其中之一:PRIO_PGRPPRIO_USERPRIO_PROCESSPRIO_DARWIN_BGPRIO_DARWIN_THREAD

返回值

pcntl_getpriority() 返回處理程序的優先級,或在發生錯誤時返回 false。數值越低,排程越優先。

警告

此函式可能返回布林值 false,但也可能返回評估為 false 的非布林值。請閱讀布林值一節以了解更多資訊。使用 === 運算子 測試此函式的返回值。

更新日誌

版本 說明
8.0.0 process_id 現在可以為 null。

另請參閱

新增註解

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

2
jonathan at jcdesigns dot com
16 年前
這個函式非常適合檢查指定的處理程序是否正在執行,我看過一些解決方案涉及執行系統工具(例如 PS)並解析答案,這應該可以正常工作,但這個函式允許您透過單次呼叫檢查指定的 PID。

function CheckPID( $PID )
{
// 檢查傳入的 PID 是否代表系統中的有效處理程序
// 如果是,則返回 true
// 暫時關閉非致命執行階段警告,因為我們知道如果 PID 不代表有效處理程序,
// 將會收到一個警告

$oldErrorLevel = error_reporting(0);
error_reporting( $oldErrorLevel & ~E_WARNING );
$res = pcntl_getpriority($PID);
error_reporting( $oldErrorLevel);
return ! ( $res === false);
}
To Top