PHP-队列传入的HTTP帖子



我正在编写PHP中的几个应用程序之间的集成。一个应用程序是将Webhook样式的HTTP帖子输出到我的Web服务器上的一个.php文件中,然后将数据处理并将数据发送到其他系统。

大概每个帖子都将异步执行,这会带来一些问题:

  1. 任务需要时间才能完成,这可能会导致更多线程运行比服务器可以处理
  2. 我试图发布的服务有API呼叫限制数据也是如此。我很可能会在大量的帖子中超越它们。

是否有一种简单的方法来'排队'http请求?(我真的不能拒绝帖子,如果我这样做,我不会再得到它)。

我已经考虑接受请求并将其保存到数据库(更快的任务),然后通过数据库上的记录进行CRON任务。这会起作用,但看起来很混乱。

如果您正在从事一个低预算项目,那么最足够的方法就是Cron Job Imo。

当前的应用程序将有效负载发送到服务器的当前应用程序可以将请求条目添加到数据库中。然后,接收请求的服务器可以简单地每天运行CRON作业X次,该作业在数据库条目上迭代并按照请求执行条目。

这样做的不利之处是,在执行操作时,您的请求不会发起。执行操作将需要时间(取决于您的Cron-Job运行的频率)。

如果您不从事低预算项目,我认为是时候升级了。

最简单的解决方案是执行有效载荷,因为它们需要执行,这意味着您随时需要执行过程来发送请求。如果您的服务器仅限于每x小时/分钟的请求数量并成为一个限制,则升级。

消息队列正是您需要的。您获取请求数据并将其发送到消息队列。网络流程此时结束,并释放资源,关闭连接等等。这些消息可以由消费者池处理。您可以将它们尽可能多地承担负载。如果您以后需要升级Web服务器或服务器基础架构(这意味着您不处理关键时期的内容)。

我建议登记库。您可以从简单的队列传输(例如enqueue/fs或Enqueue/dbal")中分层,然后在以后的阶段迁移到Rabbitmq或Amazonsqs,而不会痛苦。

最新更新