php pcntl_fork和pcntl_fork 的用法
更新時間:2009年04月13日 10:23:17 作者:
這是兩個php的多線程的方法,在Windows下不可用,在Linux下需要編譯。
pcntl_fork()函數(shù)就是為當前的進程創(chuàng)建一個子進程。并且先運行父進程,返回的是子進程的PID,肯定大于零。在父進程的代碼中可以用pcntl_fork(&$status)暫停父進程知道他的子進程有返回值。注意:父進程的阻塞同時會阻塞子進程。但是父進程的結束不影響子進程的運行。
父進程運行完了會接著運行子進程,這時子進程會從執(zhí)行pcntl_fork()的那條語句開始執(zhí)行(包括此函數(shù)),但是此時它返回的是零(代表這是一個子進程)。在子進程的代碼塊中最好有exit語句,即執(zhí)行完子進程后立即就結束。否則它會又重頭開始執(zhí)行這個腳本的某些部分(一直沒有總結出規(guī)矩)。
總之,注意兩點:
1。子進程最好有一個exit;語句,防止不必要的出錯;
2.
$pid = pcntl_fork();
//這里最好不要有其他的語句
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
}
父進程運行完了會接著運行子進程,這時子進程會從執(zhí)行pcntl_fork()的那條語句開始執(zhí)行(包括此函數(shù)),但是此時它返回的是零(代表這是一個子進程)。在子進程的代碼塊中最好有exit語句,即執(zhí)行完子進程后立即就結束。否則它會又重頭開始執(zhí)行這個腳本的某些部分(一直沒有總結出規(guī)矩)。
總之,注意兩點:
1。子進程最好有一個exit;語句,防止不必要的出錯;
2.
復制代碼 代碼如下:
$pid = pcntl_fork();
//這里最好不要有其他的語句
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
}
相關文章
php實現(xiàn)簡單路由實現(xiàn)偽靜態(tài)
這篇文章主要為大家詳細介紹了php如何實現(xiàn)簡單路由實現(xiàn)偽靜態(tài),文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-04-04
php命令行(cli)下執(zhí)行PHP腳本文件的相對路徑的問題解決方法
這篇文章主要介紹了php命令行(cli)下執(zhí)行PHP腳本文件的相對路徑的問題解決方法,特別是在crontab中運行PHP腳本時,肯定會遇到路徑問題,參照本文方法即可解決,需要的朋友可以參考下2015-05-05
PHP實現(xiàn)的sqlite數(shù)據(jù)庫連接類
這篇文章主要介紹了PHP實現(xiàn)的sqlite數(shù)據(jù)庫連接類,涉及針對SQLite數(shù)據(jù)庫的連接與增刪改查等sql操作用法,非常具有實用價值,需要的朋友可以參考下2014-12-12

