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网站备份程序代码分享
Jun 10 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
注册页面之前先验证用户名是否存在的php代码
Jul 14 PHP
php适配器模式介绍
Aug 14 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
php计算当前程序执行时间示例
Apr 24 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
php执行多个存储过程的方法【基于thinkPHP】
Nov 08 PHP
PHP中函数gzuncompress无法使用的解决方法
Mar 02 PHP
PHP 进度条函数的简单实例
Sep 19 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中用memcached实现页面防刷新功能
2014/08/19 PHP
Destoon实现多表查询示例
2014/08/21 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
php 猴子摘桃的算法
2017/06/20 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
Sea.JS知识总结
2016/05/05 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
基于jquery实现五星好评
2017/11/18 jQuery
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python微信公众号开发平台
2018/01/25 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
python RSA加密的示例
2020/12/09 Python
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
opencv实现图像几何变换
2021/03/24 Python
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
党员自我剖析材料
2014/08/31 职场文书
2014银行授权委托书样本
2014/10/04 职场文书
2014年医院工作总结
2014/11/20 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
springboot如何初始化执行sql语句
2021/06/22 Java/Android
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python