PHP中API请求的队列管理器

时间:2013-01-07 11:33:25

标签: php message-queue priority-queue

我在Laravel中开发一个可以通过Curl调用的REST API。

API的目的是根据请求参数生成文件,并将JSON响应中的这些文件作为base64字符串返回。生成过程受这些文件大小的影响很大(范围从0.5Mb到30Mb)。整个过程(从请求到响应)平均需要1秒到2分钟。

这些HTTP请求应由队列管理器(例如,gearman)处理,队列管理器可以处理优先级队列。该经理应该能够分配2-3名工作人员进行负载平衡。一个工作人员用于队列中最大的文件,1-2个工作人员用于较小的文件。

我的问题是,这些请求不像典型的邮件队列,例如,您可以对请求进行排队,后台作业将处理它。我必须尽快回复生成的文件,并在相同的响应中。

在这种情况下,您将如何实现队列?我以齿轮手为例,但我不明白如何在同一个HTTP响应中回馈结果。

(对不起,如果我的问题不明确,我会在需要时尝试更新...)

更新:

我需要一个队列,因为可能有大量客户端同时请求大量文件,并且在同时运行几个大型请求后服务器会崩溃。 1.只能有少量同时运行的进程(最多3个) 2.由于最大化服务器内存或CPU电源,不会丢失任何进程 3.优先顺序应该在队列中强制执行,以便在几秒钟内完成小型流程,而大型流程可以在几分钟内完成。

我如何能够提供这些请求并拥有此队列?这是我的问题。

1 个答案:

答案 0 :(得分:2)

这里描述的方法是一个很好的例子,在我的案例中该做什么:http://www.adayinthelifeof.nl/2011/06/02/asynchronous-operations-in-rest/