php後端會從別的地方請求回來有大量的數據,以數組形式呈現,這些數據需要一個個寫入到數據庫中,單進程實在是太慢了,想用多進程來實現.
查了一些資料,注意到pcntl_**系列的函數,但是這個好像都是只能在命令列裡執行,不能用在服務端.
請問有什麼方式可以實現這個需求呢?
請不吝賜教!
php後端會從別的地方請求回來有大量的數據,以數組形式呈現,這些數據需要一個個寫入到數據庫中,單進程實在是太慢了,想用多進程來實現.
查了一些資料,注意到pcntl_**系列的函數,但是這個好像都是只能在命令列裡執行,不能用在服務端.
請問有什麼方式可以實現這個需求呢?
請不吝賜教!
你需要的並不是多進程, 而是訊息佇列
web伺服器端收到請求之後, 推送一個訊息到訊息佇列中, 然後直接返回瀏覽器結果 (例如顯示正在處理中)
另外起一個消費訊息佇列的腳本, 長時間運行, 從訊息佇列裡面獲取訊息, 進行處理, 最後再把狀態改成處理完成 (如果你有任務這種概念的話)
在這個層面你需要多進程還是多線程就看你具體的情況了, 多進程或者多線程只對IO密集型運算能夠有提升(從你需要從別的地方請求來大量的數據來看的話還算符合)
滿足你:看看pcntl_fork函數吧
php_swoole 這個比pcntl成熟穩重。另外,是得配合訊息隊列進行處理效果比較好