核心函式
概括:
函式
pcntl_fork 建立新程式
pcntl_waitpid 等待或返回fork的子程式狀態
posix_getpid 返回當前程式 id
posix_getppid 取得父程式 id
注意
pcntl_fork 呼叫一次,返回兩個值;子程式得到的是0,父程式得到的子程式 id
程式碼段
<?php
echo "Master process id = " . posix_getpid() . PHP_EOL;
$pid = pcntl_fork();//建立一個新的程式
switch ($pid) {
case -1://如果為-1就代表失敗
die('Create failed');
break;
case 0://如果是0 就代表是子程式
// Child
echo "Child process id = " . posix_getpid() . PHP_EOL;//輸出子程式的程式id
sleep(2);
echo "I will exit\n";
break;
default:
// Parent
if ($exit_id = pcntl_waitpid($pid, $status, WUNTRACED)) {//為了防止主程式掛了 子程式變成孤兒程式 所以在等待子程式執行完成以後
echo "Child({$exit_id}) exited\n";
}
echo "Parent process id = " . posix_getpid() . PHP_EOL;
break;
}