Blogger Information
Blog 42
fans 3
comment 2
visits 93462
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
使用curl_multi_init()函数解决单次请求curl耗时久的问题
Whitney的博客
Original
2702 people have browsed it

背景描述:

由于公司业务需要不停去三方物流请求更新的物流信息,单条请求太耗时,处理万条数据需要4/5个小时左右,严重影响用户体验,故做了curl_multi_init的优化;

下面只选取中间最重要部分:

实例

$chuck_num = 50;
//由于$list数据量较大,使用array_chunk函数分割
$send_data = array_chunk($list, $chuck_num, true);

foreach ($send_data as $item) {
    $map = [];
    $mh = curl_multi_init();
    foreach ($item as $model) {
        //这里生成curl【注意:这里的curl是直接可以执行的curl资源】
        $ch = '';
        if ($ch) {
            $map[] = [$ch, $model];
            //将生成的单个curl加入到$mh中
            curl_multi_add_handle($mh, $ch);
        }
    }

    //执行此处汇总的curl
    do {
        curl_multi_exec($mh, $running);
    } while ($running > 0);

    foreach ($map as $one) {

        //获取不同的curl返回值
        $response = curl_multi_getcontent($ch);
        if ($response) {
            // TODO 对返回值做处理
        } else {
            // TODO 对请求失败的返回值做处理
        }

        //移除ch句柄
        curl_multi_remove_handle($mh, $ch);
    }
}

//关闭
curl_multi_close($mh);


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post