PHP 并发请求有没有更好的方法

2021 年 9 月 14 日
 xiaobaiyihao
PHP 请求多个 URL,除了用 curl_multi 函数,有没有效率更高的方法,感觉 curl 是 fork 进程来请求,效率感觉不是很高
3796 次点击
所在节点    程序员
29 条回复
liuyibao
2021 年 9 月 15 日
symfony/http-client

Responses are always asynchronous, so that the call to the method returns immediately instead of waiting to receive the response:

https://symfony.com/doc/current/http_client.html

用这个没错的,解析 Response 的时候才会阻塞,很好用的。
liuyibao
2021 年 9 月 15 日
symfony/http-client 搜了下源码,好像是用 yield 实现的,性能应该是可以的,只有 php7 以上能用。php8 增加的 fiber 会更强悍。
zjsxwc
2021 年 9 月 15 日
@xiaobaiyihao

> "@dusu fpm,性能每次请求必须在 300 ~ 400ms 内答应,百万吧,现在的情况就是卡在这个 curl_multi 请求上,> 本身这个接口也是高并发接口,接口内部要去并发请求其他接口"

300 ~ 400ms 内 百万请求,用什么 php 啊, 你带宽都要 2.5Gbps 了
zjsxwc
2021 年 9 月 15 日
@xiaobaiyihao

> "@dusu fpm,性能每次请求必须在 300 ~ 400ms 内答应,百万吧,现在的情况就是卡在这个 curl_multi 请求上,> 本身这个接口也是高并发接口,接口内部要去并发请求其他接口"

300 ~ 400ms 内 百万请求,用什么 php 啊, 你带宽都要 6Gbps 了
xiaobaiyihao
2021 年 9 月 15 日
@zjsxwc 现在就是怼机器来着,想办法优化
xiaobaiyihao
2021 年 9 月 15 日
@liuyibao 这个好像不支持 protobuf
xiaobaiyihao
2021 年 9 月 15 日
@zjsxwc 而且这是要求,现在就是达不到这种情况
Actrace
2021 年 9 月 15 日
@xiaobaiyihao 更换到 CLI 下会有更多选择。PHP 内置了不少多线程,事件库,甚至可以用协程。可以单独写成一个服务,驻后台运行。
changz
2021 年 9 月 15 日
@zjsxwc poll/select 在这种场景下性能不会比 epoll 低。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/801763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX