往往我們會碰到一個情況,需要寫一個腳本,這個腳本要處理的資料量極大,單程序處理腳本非常慢,那麼這個時候就會想到使用多程序或者多線程的方式了。
但是這裡有一個問題,一個主程序把任務分成n個部分,然後把任務配置設定給多個子程序,但是任務可能是有傳回值的,所有的子程序處理完傳回值以後需要把傳回值傳回給主程序。
這個就涉及到了程序間通信了。程序間通信可以使用的方法當然很多了,比如用redis,用資料庫,用檔案等。
php中最簡單的要算shmop相關函數了。
shmop_open
shmop_read
shmop_write
shmop_size
shmop_delete
那怎麼讓一個類很容易有多程序處理的能力呢?可以使用php的trait,建立一個pcntltrait,所有需要有多程序處理功能的類就use 這個trait就行。
pcntltrait代碼如下:
它有兩個參數,第一個參數為傳入數組,第二個參數為數組處理函數。
它的具體使用通過下面這個測試用例可以看出:
非常友善~~