pcntl_fork和pcntl_fork 的用法

這是兩個php的多線程的方法,在Windows下不可用,在Linux下須要編譯php

  pcntl_fork()函數就是爲當前的進程建立一個子進程。而且先運行父進程,返回的是子進程的PID,確定大於零。在父進程的代碼中能夠用 pcntl_fork(&$status)暫停父進程知道他的子進程有返回值。注意:父進程的阻塞同時會阻塞子進程。可是父進程的結束不影響子進 程的運行。 多線程

  父進程運行完了會接着運行子進程,這時子進程會從執行pcntl_fork()的那條語句開始執行(包括此函數),可是此時它返回的是零(表明這是一個子 進程)。在子進程的代碼塊中最好有exit語句,即執行完子進程後當即就結束。不然它會又重頭開始執行這個腳本的某些部分(一直沒有總結出規矩)。 函數

  總之,注意兩點: spa

1。子進程最好有一個exit;語句,防止沒必要要的出錯; 線程

2. 進程

$pid pcntl_fork(); it

//這裏最好不要有其餘的語句
if (
$pid == -1) {
     die(
'could not fork');
} else if (
$pid) {
     
// we are the parent
     
pcntl_wait($status); //Protect against Zombie children
} else {
     
// we are the child
} 編譯

相關文章
相關標籤/搜索