我有一個PHP應用程序,目前有5k用戶,並將繼續增加爲可預見的未來。每週一次我運行一個腳本:我應該使用消息隊列嗎?
- 通過用戶獲取所有用戶數據庫
- 循環,並執行每一個一定的維修費用(包括添加新的數據庫記錄)
該腳本最後一次運行時,由於30秒的最大執行時間錯誤,它只會在死前處理1400個用戶。我想到的一個解決方案是使主腳本仍然獲取所有用戶,但不是自己執行維護過程,而是爲一個新的腳本進行一次異步cURL調用(每個用戶1個),以執行維護特定用戶。
我的問題在於,5k + cURL調用可能會導致服務器關閉。這是可以通過使用消息隊列而不是cURL調用來解決的嗎?我沒有使用過的經驗,但從我讀過的內容看來,這可能會有所幫助。如果是這樣,你會推薦哪個消息隊列系統?
一些背景資料:
- 這是一個Symfony的項目,使用Doctrine作爲我ORM和MySQL作爲我的數據庫
- 服務器是Windows機器,而我使用的是Windows的任務調度程序和wget每週自動運行一次該腳本。
任何意見和幫助,非常感謝。
當我循環遍歷所有用戶時,每個用戶都使用單獨的SQL查詢保存數據庫記錄。這是你在'處理每個用戶時提交更改'的含義嗎? –