使用 curl_multi_exec 的疑问

2017-09-04 15:05:19 +08:00
 t333st

最近在写一个小东西做请求并发,用到 curl_multi_exec,发现个别 url 超时很久的时候,后丢失后面一部分 url

即加入我有 20 条 urls 并发请求时,前面 15 条响应很快,但是后面的 5 条因为该 url 的服务器问题,timeout 时间特别长,所以返回的这堆数据中,大概只能拿到 16 或 17 条 urls 的数据,后面都丢失了

不知大家有无遇到过这种情况?可有解决方法? 代码太乱,就先不贴了

3338 次点击
所在节点    PHP
7 条回复
fcka
2017-09-04 15:13:58 +08:00
PHP 默认执行时长限制为 30 秒
t333st
2017-09-04 15:48:01 +08:00
@fcka 通过终端脚本调用也是。。。
也设置了
CURLOPT_CONNECTTIMEOUT => 0,
CURLOPT_TIMEOUT => 60,
2ME
2017-09-04 15:52:01 +08:00
减少并发条数试试
1010011010
2017-09-04 20:33:02 +08:00
大概是慢的那个服务器顶不住 5 次同时请求,只响应了一两条,其他的丢了
gouchaoer
2017-09-04 23:22:32 +08:00
用 guzzle 的并发,它包装的 multi_curl_*接口
t333st
2017-09-05 09:28:38 +08:00
@gouchaoer 咦,这个好像不错
lanwairen123
2017-09-05 12:47:35 +08:00
最近发现 php-curlmulti 很不错,用它的并发跑满了我 50m 的带宽,他封装的 multi_curl,接口比较简单,https://github.com/ares333/php-curlmulti

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

https://www.v2ex.com/t/388043

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

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

© 2021 V2EX