天天看點

php多程序處理php多程序處理

往往我們會碰到一個情況,需要寫一個腳本,這個腳本要處理的資料量極大,單程序處理腳本非常慢,那麼這個時候就會想到使用多程序或者多線程的方式了。

但是這裡有一個問題,一個主程序把任務分成n個部分,然後把任務配置設定給多個子程序,但是任務可能是有傳回值的,所有的子程序處理完傳回值以後需要把傳回值傳回給主程序。

這個就涉及到了程序間通信了。程序間通信可以使用的方法當然很多了,比如用redis,用資料庫,用檔案等。

php中最簡單的要算shmop相關函數了。

shmop_open

shmop_read

shmop_write

shmop_size

shmop_delete

那怎麼讓一個類很容易有多程序處理的能力呢?可以使用php的trait,建立一個pcntltrait,所有需要有多程序處理功能的類就use 這個trait就行。

pcntltrait代碼如下:

它有兩個參數,第一個參數為傳入數組,第二個參數為數組處理函數。

它的具體使用通過下面這個測試用例可以看出:

非常友善~~