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 $_SERVER当前完整url的写法
Nov 12 PHP
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP 正则表达式小结
Feb 12 PHP
php读取csc文件并输出
May 21 PHP
php简单统计字符串单词数量的方法
Jun 19 PHP
PHP下载文件的函数实例代码
May 18 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
php 读写json文件及修改json的方法
Mar 07 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
CI框架网页缓存简单用法分析
2018/12/26 PHP
网页和浏览器兼容性问题汇总(draft1)
2009/06/01 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
深入理解Node中的buffer模块
2017/06/03 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
Django中使用Celery的方法示例
2018/11/29 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
python pandas获取csv指定行 列的操作方法
2019/07/12 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
法国珠宝店:CLEOR
2017/01/29 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
构造方法和其他方法的区别
2016/04/26 面试题
物业管理个人自我评价
2013/11/08 职场文书
教师党员自我评价2015
2015/03/04 职场文书
商场收银员岗位职责
2015/04/07 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
Python如何配置环境变量详解
2021/05/18 Python
Mysql排序的特性详情
2021/11/01 MySQL
Java使用HttpClient实现文件下载
2022/08/14 Java/Android