2017-04-07 40 views
0

我目前正在Laravel(PHP)中構建一個用於從不同主機檢索價格的API。目前有756個不同的「硬幣」與不同的主機從中檢索價格。在PHP中安排大量任務的最佳方式

例如:硬幣X

主機1 主機2 主機3 - 高達30個主機

投幣ý

主機1個 主機4 主機5 - 高達30主機 等

這裏的問題是,理想情況下,每個硬幣應每10秒更新一次。這意味着每個硬幣需要調用其所有主機,計算平均價格,將價格保存在數據庫中,最後保存一個包含硬幣歷史記錄的JSON文件。 (也許這會更好地節省當前價格作爲JSON以節省一些時間)

我試圖把所有這些放在每個主機的類中,但執行時間太長(大約5分鐘使用CURL)。

我正在考慮爲每個硬幣創建一個任務(cron job)。這樣硬幣的'更新'可以同步(多個硬幣一次)。但我不能確定這將是最好的方式。

你們會推薦什麼樣的方法?所有提示都歡迎。

回答

0

您的整體更新時間將受到硬幣數量x個別主機更新速度的限制。您可能需要花費一個(或平均)請求花費多長時間(使用腳本)來查看整個事件需要多長時間。因爲,如果它可能需要很長時間,一個接一個地執行它們,您將不得不將它設置爲並行(同時)請求。

+0

嗨海登,感謝您的支持。 1次請求的平均時間約爲。 500 - 700毫秒。如果我理解正確,你會建議把所有的請求放在CURL_MULTI中嗎?我還沒有測試過,但一個很好的電話。 – Thjeu

+0

我沒有太多的關於CURL(只有簡單的請求),沒有谷歌搜索,我不知道它是否可以同時做同步請求。但是任何你能做到的方式都值得一試。您仍然可能需要一個cron作業來定期調用php腳本,無論您是在一個函數中執行多重調用還是多次調用函數。 –

+0

哇,我剛剛用curl_multi運行整個過程並將時間縮減到12秒。這很棒。我可以從這裏進一步工作。非常感謝Hayden! – Thjeu

相關問題