登录  /  注册
博主信息
博文 42
粉丝 3
评论 2
访问量 91657
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
使用curl_multi_init()函数解决单次请求curl耗时久的问题
Whitney的博客
原创
2655人浏览过

背景描述:

由于公司业务需要不停去三方物流请求更新的物流信息,单条请求太耗时,处理万条数据需要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);


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学