V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
t333st
V2EX  ›  PHP

使用 curl_multi_exec 的疑问

  •  
  •   t333st · Sep 4, 2017 · 4210 views
    This topic created in 3156 days ago, the information mentioned may be changed or developed.

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

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

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

    7 replies    2017-09-05 12:47:35 +08:00
    fcka
        1
    fcka  
       Sep 4, 2017 via Android
    PHP 默认执行时长限制为 30 秒
    t333st
        2
    t333st  
    OP
       Sep 4, 2017
    @fcka 通过终端脚本调用也是。。。
    也设置了
    CURLOPT_CONNECTTIMEOUT => 0,
    CURLOPT_TIMEOUT => 60,
    2ME
        3
    2ME  
       Sep 4, 2017
    减少并发条数试试
    1010011010
        4
    1010011010  
       Sep 4, 2017
    大概是慢的那个服务器顶不住 5 次同时请求,只响应了一两条,其他的丢了
    gouchaoer
        5
    gouchaoer  
       Sep 4, 2017 via Android
    用 guzzle 的并发,它包装的 multi_curl_*接口
    t333st
        6
    t333st  
    OP
       Sep 5, 2017
    @gouchaoer 咦,这个好像不错
    lanwairen123
        7
    lanwairen123  
       Sep 5, 2017 via Android
    最近发现 php-curlmulti 很不错,用它的并发跑满了我 50m 的带宽,他封装的 multi_curl,接口比较简单,https://github.com/ares333/php-curlmulti
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3910 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 00:10 · PVG 08:10 · LAX 17:10 · JFK 20:10
    ♥ Do have faith in what you're doing.