2015-04-27 47 views
1

我有一個相當龐大的PHP網絡應用程序,它通過API從許多其他供應商處獲取其產品,通常用大型XML進行響應來解析。目前有20家供應商,但這是因爲進一步上漲。使用Beanstalkd/Gearman在PHP中運行併發API請求

我們目前的設置使用多捲曲來製作請求,這需要大約30-40秒來完成並且太長。腳本在後臺運行,而前端輪詢數據庫以查找結果,然後在進入時顯示它們。

爲了改進此過程,我們考慮使用作業服務器在後臺運行,每個供應商請求作爲一項單獨的工作。我們已經看到beanstalkd和Gearman被提及。

那麼,我們正在尋找正確的方向,因爲在工作服務器是正確的路要走嗎?我們正在考慮儘快進行一些推廣,以便我們可以讓200多個用戶同時搜索30個供應商,所以如果我們必須負載均衡,正確的選擇需要很好的擴展。

任何建議是很好的收到。

+0

後臺作業,處理多個源以及大量緩存以避免多次執行相同的工作(至少直到底層數據發生更改)。然後前端會輪詢緩存以獲取產品詳細信息。 –

回答

0

您可以使用Beanstalkd,因爲您可以自定義作業的優先級和TTR解決時間,默認值爲60秒,但對於您的場景,您必須增加它。 Beanstalkd有一個不錯的admin console panel

您還應該利用多捲曲調用,因此您應該使用並行請求。爲了使用Keep-alive,您還需要維護一個CURL手柄池並使其保持溫暖。見high performance curl tips。您還需要調整Linux network stack

如果您在雲中運行此操作,請確保您使用多臺微型計算機而不是一臺重型計算機,因爲當您有多個可用資源時吞吐量會更好。