pcntl_fork

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

pcntl_fork 在當前進程當前位置產(chǎn)生分支(子進程)。譯注:fork是創(chuàng)建了一個子進程,父進程和子進程 都從fork的位置開始向下繼續(xù)執(zhí)行,不同的是父進程執(zhí)行過程中,得到的fork返回值為子進程 號,而子進程得到的是0。

說明

pcntl_fork(): int

pcntl_fork()函數(shù)創(chuàng)建一個子進程,這個子進程僅PID(進程號) 和PPID(父進程號)與其父進程不同。fork怎樣在您的系統(tǒng)工作的詳細信息請查閱您的系統(tǒng) 的fork(2)手冊。

返回值

成功時,在父進程執(zhí)行線程內(nèi)返回產(chǎn)生的子進程的PID,在子進程執(zhí)行線程內(nèi)返回0。失敗時,在 父進程上下文返回-1,不會創(chuàng)建子進程,并且會引發(fā)一個PHP錯誤。

范例

示例 #1 pcntl_fork() 示例

<?php

$pid 
pcntl_fork();
//父進程和子進程都會執(zhí)行下面代碼
if ($pid == -1) {
    
//錯誤處理:創(chuàng)建子進程失敗時返回-1.
     
die('could not fork');
} else if (
$pid) {
     
//父進程會得到子進程號,所以這里是父進程執(zhí)行的邏輯
     
pcntl_wait($status); //等待子進程中斷,防止子進程成為僵尸進程。
} else {
     
//子進程得到的$pid為0, 所以這里是子進程執(zhí)行的邏輯。
}

?>

參見