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&amp;mysql(五)
Oct 09 PHP
CakePHP去除默认显示的标题及图标的方法
Oct 22 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
php使用反射插入对象示例分享
Mar 11 PHP
php去除数组中重复数据
Nov 18 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
Dec 16 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
php查找字符串中第一个非0的位置截取
Feb 27 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
laravel异步监控定时调度器实例详解
Jun 21 PHP
php实现的简单多进程服务器类完整示例
Feb 01 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中使用XML
2006/10/09 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
python实现指定字符串补全空格的方法
2015/04/30 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
党小组考察意见
2015/06/02 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
导游词之河北白洋淀
2020/01/15 职场文书