1

我有一个 PHP 站点,我在其中进行了 ajax 调用,在该 ajax 调用中,我调用了返回 XML 并解析它的 API,有时 XML 的问题是如此之大以至于需要很多时间,负载均衡器EC2 的超时值为 20 分钟,所以如果我的通话时间大于这个值,我会收到 504 错误,我该如何解决这个问题?我知道这是服务器问题,但我该如何解决?我认为 php.ini 在这里没有帮助

4

1 回答 1

1

HTTP 是一种无状态协议。在请求的几秒钟内做出对请求的响应时,它的效果最好。当您没有快速响应时,超时就会开始发挥作用。这可能是您可以控制的超时(fcgi 进程超时)或您无法控制的超时(第三方代理、客户端浏览器)。

那么,当您的工作时间超过几秒钟时,您会怎么做?当然使用消息队列。

执行此操作的廉价方法是将作业存储在 db 表中,并从表中读取 cron 并处理工作。这可以在小范围内起作用,但是当您尝试变大时会出现一些问题。

正确的方法是使用真正的消息队列系统。Amazon 有 SQS,但也可以使用 Gearman、zeroMQ、rabbitMQ 等来处理这个问题。

于 2014-01-17T21:31:27.390 回答