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下图片文字混合水印与缩略图实现代码
Dec 11 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 PHP
采用memcache在web集群中实现session的同步会话
Jul 05 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
非常实用的php验证码类
May 15 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
PHP读取目录树的实现方法分析
Mar 22 PHP
laravel-admin自动生成模块,及相关基础配置方法
Oct 08 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 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+JS实现搜索自动提示(实例)
2013/06/09 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
Mootools 1.2教程 滑动效果(Slide)
2009/09/15 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
JQuery分屏指示器图片轮换效果实例
2015/05/21 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
python内存管理机制原理详解
2019/08/12 Python
Python collections模块使用方法详解
2019/08/28 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
领导班子对照检查材料
2014/09/22 职场文书
学生个人总结范文
2015/02/15 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
考博导师推荐信范文
2015/03/27 职场文书
纪检监察立案决定书
2015/06/24 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
php实例化对象的实例方法
2021/11/17 PHP
vue动态绑定style样式
2022/04/20 Vue.js