我熟悉 php-resque 和其他用于处理后台作业的作业处理系统,但我认为它不能满足我的需要。
在这种情况下,我有一个传入的 Web 服务请求,该请求需要对外部系统执行多个 (2-4) 独立调用,并返回对客户端的合并响应。每个标注可能需要 300-500 毫秒,所以我希望每个标注并行执行,以便整个过程总共花费不超过 500 毫秒+/-。
我对 php-resque 和其他系统的问题是,即使等待 1 秒才能开始发出这些标注,等待时间太长,我正在考虑另一种方法。
我在想什么:
- 每个单独的标注都被描述并存储在具有给定唯一请求 ID 的数据库中
- 我们以异步 php 进程(又名“工作进程”)的形式立即开始工作
- 每个工人将其结果写回作业记录并指示它已完成
- 同时,我们每隔 50-100ms 轮询一次作业表,检查每个作业的状态
- 当每个都完成时,我们根据需要解析结果并返回响应。
当然,我们会为每个请求和整个过程实现超时......
想法?我错了吗?php-resque 可以立即并行启动多个工作吗?