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 相关文章推荐
使用apache模块rewrite_module (转)
Feb 14 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
Nov 09 PHP
CI框架常用函数封装实例
Nov 21 PHP
PHP中的浅复制与深复制的实例详解
Oct 26 PHP
详细解读php的命名空间(一)
Feb 21 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 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
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
Element Input组件分析小结
2018/10/11 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
实时获取Python的print输出流方法
2019/01/07 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
Python中six模块基础用法
2019/12/08 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
咖啡书吧创业计划书
2014/01/13 职场文书
球队口号
2014/06/18 职场文书
党校学习心得体会范文
2014/09/09 职场文书
小学趣味运动会加油稿
2014/09/25 职场文书
80后婚前协议书范本
2014/10/24 职场文书
2014年信访工作总结
2014/11/17 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
婚礼答谢礼品
2015/01/20 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
二婚主持词
2015/06/30 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python