各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

PHP使用curl_multi实现并发请求的方法示例php技巧

管理员 2023-09-05
PHP
124

PHP使用curl_multi实现并发请求的方法示例php技巧

内容导读

收集整理的这篇技术教程文章主要介绍了PHP使用curl_multi实现并发请求的方法示例php技巧,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2393字,纯文字阅读大概需要4分钟

内容图文

这篇文章主要介绍了PHP使用curl_multi实现并发请求的方法,结合实例形式分析了php封装curl_multi实现的并发请求相关操作技巧,需要的朋友可以参考下

本文实例讲述了PHP使用curl_multi实现并发请求的方法。分享给大家供大家参考,具体如下:

class CurlMultiUtil {  /**  * 根据url,postData获取curl请求对象,这个比较简单,可以看官方文档  */  private static function getCurlObject($url,$postData=array(),$header=array()){    $options = array();    $url = trim($url);    $options[CURLOPT_URL] = $url;    $options[CURLOPT_TIMEOUT] = 3;    $options[CURLOPT_RETURNTRANSFER] = true;    foreach($header as $key=>$value){      $options[$key] =$value;    }    if(!empty($postData) && is_array($postData)){      $options[CURLOPT_POST] = true;      $options[CURLOPT_POSTFIELDS] = http_build_query($postData);    }    if(stripos($url,'https') === 0){      $options[CURLOPT_SSL_VERIFYPEER] = false;    }    $ch = curl_init();    curl_setopt_array($ch,$options);    return $ch;  }  /**   * [request description]   * @param [type] $chList   * @return [type]   */  private static function request($chList){    $downloader = curl_multi_init();    // 将三个待请求对象放入下载器中    foreach ($chList as $ch){      curl_multi_add_handle($downloader,$ch);    }    $res = array();    // 轮询    do {      while (($execrun = curl_multi_exec($downloader, $running)) == CURLM_CALL_MULTI_PERFORM);      if ($execrun != CURLM_OK) {        break;      }      // 一旦有一个请求完成,找出来,处理,因为curl底层是select,所以最大受限于1024      while ($done = curl_multi_info_read($downloader)){        // 从请求中获取信息、内容、错误        // $info = curl_getinfo($done['handle']);        $output = curl_multi_getcontent($done['handle']);        // $error = curl_error($done['handle']);        $res[] = $output;        // 把请求已经完成了得 curl handle 删除        curl_multi_remove_handle($downloader, $done['handle']);      }      // 当没有数据的时候进行堵塞,把 CPU 使用权交出来,避免上面 do 死循环空跑数据导致 CPU 100%      if ($running) {        $rel = curl_multi_select($downloader, 1);        if($rel == -1){          usleep(1000);        }      }      if($running == false){        break;      }    }while(true);    curl_multi_close($downloader);    return $res;  }  /**   * [get description]   * @param [type] $urlArr   * @return [type]   */  public static function get($urlArr){    $data = array();    if (!empty($urlArr)) {      $chList = array();      foreach ($urlArr as $key => $url) {        $chList[] = self::getCurlObject($url);      }      $data = self::request($chList);    }    return $data;  }}

您可能感兴趣的文章:

PHP性能测试工具xhprof安装与使用方法详解php技巧

PHP实现通过strace定位故障原因的方法php技巧

yii2多图上传组件的使用教程php实例

以上就是PHP使用curl_multi实现并发请求的方法示例php技巧的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP使用curl_multi实现并发请求的方法示例php技巧全部内容,希望文章能够帮你解决PHP使用curl_multi实现并发请求的方法示例php技巧所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部