PHP的pcntl多程式
PHP使用PCNTL系列的函式也能做到多程式處理一個事務。比如我需要從資料庫中獲取80w條的資料,再做一系列後續的處理,這個時候,用單程式?你可以等到明年今天了。。。所以應該使用pcntl函式了。
假設我想要啟動20個程式,將1-80w的資料分成20份來做,主程式等待所有子程式都結束了才退出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
$max = 800000;
$workers = 20;
$pids = array ();
for ( $i = 0; $i < $workers ; $i ++){
$pids [ $i ] = pcntl_fork();
switch ( $pids [ $i ]) {
case -1:
echo "fork error : {$i} ;
exit ;
case 0:
$param = array (
`lastid` => $max / $workers * $i ,
`maxid` => $max / $workers * ( $i +1),
);
$this ->executeWorker( $input , $output , $param );
exit ;
default :
break ;
}
} foreach ( $pids as $i => $pid ) {
if ( $pid ) {
pcntl_waitpid( $pid , $status );
}
} |
這裡當pcntl_fork出來以後,會返回一個pid值,這個pid在子程式中看是0,在父程式中看是子程式的pid(>0),如果pid為-1說明fork出錯了。
使用一個$pids陣列就可以讓主程式等候所有程式完結之後再結束了
本文轉自軒脈刃部落格園部落格,原文連結:http://www.cnblogs.com/yjf512/p/3217615.html,如需轉載請自行聯絡原作者
相關文章
- 基於PCNTl擴充套件的PHP多程式管理庫套件PHP
- PHP Fatal error: Uncaught Error: Call to undefined function pcntl_fork().. 開啟php pcntl擴充套件實現多程式PHPErrorUndefinedFunction套件
- php多程式插入資料(pcntl 學習筆記二)PHP筆記
- PHP:php7.2.3 安裝pcntl 擴充套件PHP套件
- php新增pcntl擴充套件(Linux)PHP套件Linux
- 短文2:用 pcntl_fock 函式淺談多程式怎麼回事函式
- php利用pcntl擴充套件實現高併發PHP套件
- PHP多程式(4) :內部多程式PHP
- 探索 PHP 多程式PHP
- 優雅的玩PHP多程式PHP
- laradock 安裝擴充套件程式 pcntl套件
- PHP多程式程式設計(3):多程式抓取網頁的演示PHP程式設計網頁
- mac安裝PHP擴充套件之pcntl遇坑筆記MacPHP套件筆記
- PHP多程式程式設計(一)PHP程式設計
- PHP 的多程式與執行緒PHP執行緒
- pcntl擴充套件學習筆記一(pcntl_fork與pcntl_wait,序列執行分析)套件筆記AI
- php多程式管理器PHP
- PHP程式碼分享:開啟多程式PHP
- PHP的開合式多級選單程式PHP
- PHP多程式並行執行php指令碼PHP並行指令碼
- php:多程式執行任務PHP
- PHP 多程式處理任務PHP
- PHP多程式學習(二)__fork起多個子程式,父程式的阻塞與非阻塞PHP
- 理解 pcntl_fork 函式函式
- PHP多程式學習(一)__來初步瞭解一下PHP多程式及簡單demoPHP
- PHP多程式程式設計(2):管道通訊PHP程式設計
- PHP開發者該知道的多程式消費佇列PHP佇列
- PHP系統程式設計--01.多程式與多執行緒PHP程式設計執行緒
- 畫江湖之 PHP 多程式開發 【建立一個新的程式】PHP
- 畫江湖之 PHP 多程式開發 [建立一個新的程式]PHP
- 用 PHP 玩轉程式之二 — 多程式 PHPServerPHPServer
- PHP網站警報,多種PHP程式過濾漏洞(轉)PHP網站
- PHP多程式開發[快問快答系列]PHP
- 從0到1優雅的實現PHP多程式管理PHP
- 畫江湖之 PHP 多程式開發 【多工採集圖片】PHP
- 畫江湖之 PHP 多程式開發 [多工採集圖片]PHP
- PHP實現master-worker守護多程式PHPAST
- 你知道如何用 PHP 實現多程式嗎?PHP