gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 11:46:57 31 4
gpt4 key购买 nike

我正在编写一个 PHP 脚本:

  • 收到客户请求;
  • 通过 CPU-and-Time-Intensive-binary-computation 处理请求
  • 将计算结果存入MySQL数据库
  • 然后用 Status 200 OK 响应客户端

问题:当在高峰时段每秒有 10 到 1000 个请求传入时:客户端必须等待很长时间才能收到 Status 200 OK

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

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

注意事项:

  • 在 Ubuntu [AMPRU] 上运行 Apache、MySQL、PHP、Redis
  • 客户端只需发送请求并立即收到 Status 200 OK
  • 客户端不会等待请求的计算完成。
  • 没有适当的自动缩放或负载平衡概念:它是单个 AMPRU 服务器。
  • 如果多个计算可以在幕后并行发生就更好了

最佳答案

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

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

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

关于PHP 接收并响应数以千计的请求——在幕后进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887922/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com