函式介紹: EvChild::__construct()
函式用於建立一個新的子程序。
函式用法:
EvChild::__construct ( int $pid , int $traceflags , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
$pid
是一個整數引數,表示要監視的子程序的程序ID。$traceflags
是一個整數引數,表示用於開啟或關閉除錯跟蹤的位掩碼。$callback
是一個回撥函式,用於指定在子程序退出或被終止時需要執行的程式碼。$data
是一個可選引數,用於傳遞額外的資料給回撥函式。$priority
是一個可選引數,用於指定程序的優先順序。
函式示例: 以下示例演示瞭如何使用 EvChild::__construct()
函式來建立一個新的子程序並監視其狀態:
$pid = pcntl_fork();
if ($pid == -1) {
// 建立子程序失敗
exit("Fork failed");
} elseif ($pid > 0) {
// 在父程序中執行的程式碼
$ev_child = new EvChild($pid, 0, function ($w, $revents) {
pcntl_waitpid($w->rpid, $status);
echo "Child process " . $w->rpid . " exited with status: " . pcntl_wexitstatus($status) . "\n";
});
} else {
// 在子程序中執行的程式碼
echo "Child process " . getmypid() . " is running\n";
sleep(2);
exit(123); // 子程序退出並返回狀態碼
}
在上述示例中,EvChild::__construct()
函式用於建立一個監視子程序狀態的監視器。當子程序退出時,回撥函式將被呼叫,並顯示子程序的程序ID和退出狀態碼。
請注意,pcntl_fork()
函式用於建立一個新的子程序,並根據返回的值判斷當前程式碼段是在父程序還是子程序中執行。