2013-01-07 21 views
3

我正在Laravel中開發一個可以通過Curl調用的REST API。PHP中的API請求的隊列管理器

API的用途是根據請求參數生成文件,並將JSON響應中的文件作爲base64字符串返回。生成過程受這些文件大小的影響很大(從0.5Mb到30Mb)。整個過程(從請求到響應)平均需要1秒到2分鐘。

這些HTTP請求應該由可以處理優先級隊列的隊列管理器(例如gearman)處理。這位經理應該能夠分配2-3名員工進行負載平衡。一名工作人員爲隊列中最大的文件,1-2名工作人員爲較小的文件。

我的問題是,這些請求不像一個典型的郵件隊列,例如,你可以排隊請求,後臺作業將處理它。我必須儘快將所得到的文件歸還給我們,並以相同的迴應。

在這種情況下,你究竟會實現一個隊列?舉例來說,我曾看過齒輪工,但我不明白如何在相同的HTTP響應中給出結果。

(很抱歉,如果我的問題不明確,我會嘗試,如果需要更新...)

更新:

我需要一個隊列,因爲有可能是一個巨大的客戶端請求的金額同時有很多文件,服務器會在同時運行幾個大請求之後崩潰。 1.只能有少量的同步運行進程(最多3個) 2.由於最大限度地減少服務器內存或CPU電源,不會損失進程 3.優先級應在隊列上執行以公平小的流程可以在幾秒鐘內完成,而大型流程可以在幾分鐘內完成。

我怎樣才能提供這些請求,也有這個隊列?這是我的問題。

+0

你能預測的時間提前的工作需要多長時間?隊列管理器的*角色是什麼?爲了確保發言權?爲了確保長期工作最終發生,慢慢地,完全沒有?爲了確保快速作業不會堵塞管道? – Charles

+0

如果它是相同的HTTP響應,那麼就沒有隊列。這使得你的問題很不明確。又是什麼? – hakre

+0

我已更新我的問題,以便更清楚地瞭解隊列。 –

回答