• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP curl批处理及多请求并发实现方法分析

    本文实例讲述了PHP curl批处理及多请求并发实现方法。分享给大家供大家参考,具体如下:

    在面试过程中遇到一个问题,加入一个一个网站访问一次需要两秒,我们如何实现在2秒左右请求三次?

    面试官想问的就是如何使用curl并发处理请求

    关于curl_multi_init()

    一般来说,想到要用curl_multi_init()时,目的是要同时请求多个url,而不是一个一个依次请求,否则就要curl_init()了。

    不过,在使用curl_multi的时候,你可能遇到cpu消耗过高、网页假死等现象,可以看看《PHP使用curl_multi_select解决curl_multi网页假死问题》

    使用curl_multi的步骤总结如下:

    各函数作用解释:

    curl_multi_init()
    初始化一个curl批处理句柄资源。

    curl_multi_add_handle()
    向curl批处理会话中添加单独的curl句柄资源。curl_multi_add_handle()函数有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。

    curl_multi_exec()
    解析一个curl批处理句柄,curl_multi_exec()函数有两个参数,第一个参数表示一个批处理句柄资源,第二个参数是一个引用值的参数,表示剩余需要处理的单个的curl句柄资源数量。

    curl_multi_remove_handle()
    移除curl批处理句柄资源中的某个句柄资源,curl_multi_remove_handle()函数有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。

    curl_multi_close()
    关闭一个批处理句柄资源。

    curl_multi_getcontent()
    在设置了CURLOPT_RETURNTRANSFER的情况下,返回获取的输出的文本流。

    curl_multi_info_read()
    获取当前解析的curl的相关传输信息。

    示例代码:

    ?php
    // 创建一对cURL资源
    $ch1 = curl_init();
    $ch2 = curl_init();
    // 设置URL和相应的选项
    curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
    curl_setopt($ch1, CURLOPT_HEADER, 0);
    curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
    curl_setopt($ch2, CURLOPT_HEADER, 0);
    // 创建批处理cURL句柄
    $mh = curl_multi_init();
    // 增加2个句柄
    curl_multi_add_handle($mh,$ch1);
    curl_multi_add_handle($mh,$ch2);
    $running=null;
    // 执行批处理句柄
    do {
      usleep(10000);
      curl_multi_exec($mh,$running);
    } while ($running > 0);
    // 关闭全部句柄
    curl_multi_remove_handle($mh, $ch1);
    curl_multi_remove_handle($mh, $ch2);
    curl_multi_close($mh);
    ?>
    
    

    获取批处理后的结果:

    string curl_multi_getcontent ( resource $ch )

    ch是由 curl_init() 返回的 cURL 句柄。

    参考:

    http://www.php.net/manual/zh/function.curl-multi-init.php

    https://www.jb51.net/article/145660.htm

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php curl用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》及《PHP中json格式数据操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php多进程并发编程防止出现僵尸进程的方法分析
    • PHP高并发和大流量解决方案整理
    • PHP 并发场景的几种解决方案
    • PHP下用Swoole实现Actor并发模型的方法
    • php多进程模拟并发事务产生的问题小结
    • PHP利用Mysql锁解决高并发的方法
    • php curl批处理实现可控并发异步操作示例
    • PHP使用curl_multi实现并发请求的方法示例
    • 详解PHP服务器如何在有限的资源里最大提升并发能力
    上一篇:php使用curl_init()和curl_multi_init()多线程的速度比较详解
    下一篇:Laravel中的chunk组块结果集处理与注意问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP curl批处理及多请求并发实现方法分析 PHP,curl,批处理,及,多,请求,