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 加密解密内部算法
Apr 22 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
学习php分页代码实例
Oct 24 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
php的hash算法介绍
Feb 13 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
php使用timthumb生成缩略图的方法
Jan 22 PHP
各种快递查询--Api接口
Apr 26 PHP
php通过smtp邮件验证登陆的方法
May 11 PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 PHP
php多进程应用场景实例详解
Jul 22 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求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
解析Python中的异常处理
2015/04/28 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
import的本质解析
2017/10/30 Python
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
便捷提取python导入包的属性方法
2018/10/15 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
教师实习自我鉴定
2013/12/13 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
美术学专业求职信
2014/07/23 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
2014年公务员工作总结
2014/11/18 职场文书
涨价通知怎么写
2015/04/23 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
python基础入门之字典和集合
2021/06/13 Python
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers
MySQL的索引你了解吗
2022/03/13 MySQL