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 用checkbox一次性删除多条记录的方法
Feb 23 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
Apr 28 PHP
分享下页面关键字抓取components.arrow.com站点代码
Jan 30 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
PHP对象相关知识总结
Apr 09 PHP
浅谈PHP中的面向对象OOP中的魔术方法
Jun 12 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
PHP时间函数使用详解
Mar 21 PHP
PHP保存Base64图片base64_decode的问题整理
Nov 04 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
PHP4在Windows2000下的安装
2006/10/09 PHP
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python交互环境下实现输入代码
2018/06/22 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
Python 忽略文件名编码的方法
2020/08/01 Python
美国儿童玩具、装扮和玩偶商店:Magic Cabin
2018/09/02 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
团代会宣传工作方案
2014/05/08 职场文书
保安2014年终工作总结
2014/12/06 职场文书
加入学生会自荐书
2015/03/05 职场文书
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL