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 VS ASP
Oct 09 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
PHP Stream_*系列函数
Aug 01 PHP
php简单提示框alert封装函数
Aug 08 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
Jul 07 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
php静态成员方法和静态的成员属性的使用方法
Oct 26 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 PHP
Laravel中Kafka的使用详解
Mar 24 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
精致的人儿就要挑杯子喝咖啡
2021/03/03 冲泡冲煮
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python读取mp3中ID3信息的方法
2015/03/05 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
Python flask框架端口失效解决方案
2020/06/04 Python
python中get和post有什么区别
2020/06/19 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
洗发水广告词
2014/03/13 职场文书
土地转让协议书
2014/04/15 职场文书
郭明义观后感
2015/06/08 职场文书
鲁冰花观后感
2015/06/10 职场文书
欠条范文
2015/07/03 职场文书
详解Python魔法方法之描述符类
2021/05/26 Python
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android