如何使用多进程并行组合处理一个业务?

xiaopi

查了官方文档和社区的讨论,一直没搞清楚的如何获取异步任务的返回值。我现在使用webman提供一个http接口,该功能需要实现以下:

去ES的A索引中查询数据
去数据库中查询
去ES的B索引中查询数据

以上三步IO没有次序,我想可以用多进程的思路来提高并发量。
如果是在其他php-cli环境下,我可以fork三个子进程,然后阻塞父进程等待三个子进程的返回,得到三个子进程的返回后,父进程统一组装数据响应给调用方。
但是在webman中如何实现呢?
我看文档中有说明可以创建带监听的task进程,然后控制器中使用异步TCP客户端的方式去投递任务,然后在异步TCP客户端的回调中获取返回结果,但是这种情况下我在控制器这个主进程怎么阻塞等待三个任务的返回啊?

712 1 1
1个回答

walkor

可以将这三个步骤封装成http接口,然后用guzzle并发请求它们,类似微服务调用。

  • xiaopi 2023-04-18

    好的,谢谢哈。那就是在http请求中实际上不太容易做异步。我看社区中说webman不能使用wokerman/http-client异步包,我实际测试中发现webman可以使用,但是异步效果似乎不适合在控制器中写,更适合用于websocket这种主动推送的,我试试使用yzh52521/easyhttp 这个包并发请求

年代过于久远,无法发表回答
🔝