PHP实现的curl批量请求操作示例


Posted in PHP onJune 06, 2018

本文实例讲述了PHP实现的curl批量请求操作。分享给大家供大家参考,具体如下:

<?php
$ch = array();
$res = array();
$conn = array();
$urls = array(
  'baidu' => "http://www.baidu.com/",
  'cheyun' => "http://auto.jrj.com.cn/",
  'w3c' => "http://www.w3cschool.cc/",
);
// 创建批处理cURL句柄
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
  // 创建一对cURL资源
  $conn[$i] = curl_init();
  // 设置URL和相应的选项
  curl_setopt($conn[$i], CURLOPT_URL, $url);
  curl_setopt($conn[$i], CURLOPT_HEADER, 0);
  curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($conn[$i], CURLOPT_TIMEOUT, 10);
  //302跳转
  curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1);
  // 增加句柄
  curl_multi_add_handle($mh, $conn[$i]);
}
$active = null;
//防卡死写法:执行批处理句柄
do {
  $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
  if (curl_multi_select($mh) != -1) {
    do {
      $mrc = curl_multi_exec($mh, $active);
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  }
}
foreach ($urls as $i => $url) {
  //获取当前解析的cURL的相关传输信息
  $info = curl_multi_info_read($mh);
  //获取请求头信息
  $heards = curl_getinfo($conn[$i]);
  var_dump($heards);
  //获取输出的文本流
  $res[$i] = curl_multi_getcontent($conn[$i]);
  // 移除curl批处理句柄资源中的某个句柄资源
  curl_multi_remove_handle($mh, $conn[$i]);
  //关闭cURL会话
  curl_close($conn[$i]);
}
//关闭全部句柄
curl_multi_close($mh);
//var_dump($res);

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

PHP 相关文章推荐
PHP语法速查表
Jan 02 PHP
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
Jun 25 PHP
php mail to 配置详解
Jan 16 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 #PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 #PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 #PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 #PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 #PHP
PHP实现的超长文本分页显示功能示例
Jun 04 #PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 #PHP
You might like
php面向对象的方法重载两种版本比较
2008/09/08 PHP
PHP 七大优势分析
2009/06/23 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
vue实现通讯录功能
2018/07/14 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python 获取et和excel的版本号
2009/04/09 Python
python实现调用其他python脚本的方法
2014/10/05 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
荟萃全球保健品:维他购
2018/05/09 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
物流仓储实习自我鉴定
2013/09/25 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis