畫江湖之 PHP 多程式開發 【建立一個新的程式】

Krisji發表於2019-04-01

核心函式

概括:

函式
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;
}

相關文章