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为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
PHP令牌 Token改进版
Jul 18 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
Jul 01 PHP
PHP引用符&amp;的用法详细解析
Aug 22 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
Sep 30 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
PHP使用fopen与file_get_contents读取文件实例分享
Mar 04 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 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高自定义性安全验证码代码
2011/11/27 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
php输出形式实例整理
2020/05/05 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
js选项卡的制作方法
2017/01/23 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
Python可变参数函数用法实例
2015/07/07 Python
python实现Windows电脑定时关机
2018/06/20 Python
python实现Zabbix-API监控
2018/09/17 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
python 发送get请求接口详解
2020/11/17 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
中学推普周活动总结
2015/05/07 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript