我需要異步調用循環中的PHP方法。異步PHP調用類方法
這是我的嘗試:
foreach ($batch_ids as $batch_id) {
$this->launchBackgroundProcess($this->sendBatchMail($batch_id));
}
public function launchBackgroundProcess($call) {
// pclose(popen($call.'/dev/null &', 'r'));
Proc_close(Proc_open($call.' > /dev/null & ', 'r'));
return true;
}
現在的錯誤是,我的功能sendBatchMail被直接調用和launchBackgroundProcess不會被調用(使用回聲/打印/日誌查詢)。
所以如果在一個批處理id中有10k個郵件,下一批id的endBatchcMail永遠不會啓動。
我希望在後臺爲所有批處理標識符retreived同時並異步調用sendBatchMail。
我並不十分精通pthreads ......並且似乎是我的最後一站。
非常感謝。我這個運行郵件的php方法本身是通過cron執行的。但我希望這最終可以同步batch_id調用。將通過鏈接進一步瞭解您的建議。 – zeetit 2015-03-31 08:04:19
基本上你想要*並行運行多個進程*。 「異步性」只是切線。由於PHP並不是一種真正的異步語言,因此實現此目標的最佳方式是通過運行的工作人員數量來控制並行進程的數量,並通過消息隊列控制這些工作人員從哪裏獲得工作。 – deceze 2015-03-31 08:06:51