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 相关文章推荐
php5新改动之短标记启用方法
Sep 11 PHP
PHP 全角转半角实现代码
May 16 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
关于PHP内存溢出问题的解决方法
Jun 25 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 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
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
基于jquery循环map功能的代码
2011/02/26 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
从数组中随机取x条不重复数据的JS代码
2013/12/24 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
python使用post提交数据到远程url的方法
2015/04/29 Python
Python3.6正式版新特性预览
2016/12/15 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
Python实现代码统计工具
2019/09/19 Python
Python如何使用字符打印照片
2020/01/03 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
AJAX的全称是什么
2012/11/06 面试题
供货协议书
2014/04/22 职场文书
服务理念口号
2014/06/11 职场文书
农村门前三包责任书
2014/07/25 职场文书
聘任证明怎么写
2015/03/02 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
教你怎么用Python操作MySql数据库
2021/05/31 Python