PHP 接收并响应数以千计的请求 - 在幕后进行计算

PHP receive and respond to thousands of requests - do calculations behind the scene

我正在编写一个 PHP 脚本:

问题:当高峰时段每秒有10000000多个请求进来时:客户端必须等待很长时间才能接收Status 200 OK

灵活性:脚本不需要用计算结果来响应客户端。该脚本甚至不需要根据计算的 success/failure 响应 Status 200 OK - 计算最终可能会失败,这完全没问题。所以实际的计算真的可以在幕后并行发生。

在 PHP 上应该使用什么工具/包/库/策略来实现这种密集的请求处理设计?它甚至是 PHP 方面的问题还是可以从 Apache 方面解决?

备注:

这是队列的经典用例。在您列出的技术堆栈中,Redis 支持队列(查看 PHP-Resque 库),或者还有其他可以使用的工具,例如 Beanstalkd(我最喜欢的,具有Pheanstalk PHP 库)或 Amazon SQS。还有许多其他选项,既可以自托管,也可以作为服务提供。

网站或其他机制接收数据,并将其排队 - 返回 200 OK。后端工作人员,就像基于 cron 的系统一样简单,或者(更好的)多个 long-运行ning(偶尔重新启动以清理)脚本,从队列中提取项目并执行工作,节省结果。

通过这样的系统,我确实 运行 有数亿个这样的工作。工作人员,如果他们可以访问队列和数据库服务器,甚至不必 运行 在同一台机器上(我 运行 在尽可能多的服务器上部署了数十名工作人员)。