這是兩個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
} 編譯