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 相关文章推荐
在字符串中把网址改成超级链接
Oct 09 PHP
基于PHP异步执行的常用方式详解
Jun 03 PHP
php使用session二维数组实例
Nov 06 PHP
Symfony2 session用法实例分析
Feb 04 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
php mysqli查询语句返回值类型实例分析
Jun 29 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
PHP后台实现微信小程序登录
Aug 03 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 27 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读写文件的方法(生成HTML)
2006/11/27 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
文本域中换行符的替换示例
2014/03/04 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
python颜色随机生成器的实例代码
2020/01/10 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
微博营销计划书
2014/01/10 职场文书
国税会议欢迎词
2014/01/16 职场文书
《守株待兔》教学反思
2014/03/01 职场文书
股权收购意向书
2014/04/01 职场文书
小学语文教研活动总结
2014/07/01 职场文书
导游词之南京夫子庙
2019/12/09 职场文书