$mh = curl_multi_init();

$ch = array();

$chunck = 10; //并发控制数

$all = count($urls);//所有的请求url数组

$chunck = $all > $chunck ? $chunck : $all;

$options = array(

CURLOPT_HEADER=>FALSE,

CURLOPT_RETURNTRANSFER=>TRUE,

CURLOPT_FOLLOWLOCATION=>TRUE,

CURLOPT_MAXREDIRS=>5,

CURLOPT_USERAGENT=>'Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0'

);

for($i = 0 ; $i < $chunck ; $i++){

$ch[$i] = curl_init();

curl_setopt($ch[$i],CURLOPT_URL,$urls[$i]);

curl_setopt_array($ch[$i],$options);

curl_multi_add_handle($mh,$ch[$i]);

}

do {

while(($execrun = curl_multi_exec($mh, $running)) == CURLM_CALL_MULTI_PERFORM);

if($execrun != CURLM_OK)break;

// a request was just completed -- find out which one

while($done = curl_multi_info_read($mh)) {

//获取已经返回的url在urls数组里德的index

$index = array_search($done['handle'],$ch);

$info = curl_getinfo($done['handle']);

if ($info['http_code'] == 200){

$output = curl_multi_getcontent($ch[$index]);

// request successful.  process output using the callback function.

$save_path = $i.'.txt';//数据保存路径

file_put_contents($save_path,$output);

// start a new request (it's important to do this before removing the old one)

$next = $i++;// increment i

$ch[$next] = curl_init();

$options[CURLOPT_URL] = $urls[$next];//将下一个请求添加到队列

curl_setopt_array($ch[$next],$options);

curl_multi_add_handle($mh, $ch[$next]);

// remove the curl handle that just completed

curl_multi_remove_handle($mh, $done['handle']);

} else {

// request failed.  add error handling.

}

}

} while ($running);

curl_multi_close($mh);

阅读(1446) | 评论(0) | 转发(0) |

php curl异步跳转,php curl批处理--可控并发异步相关推荐

  1. 用php批处理图片,PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1.初始化 2. ...

  2. php curl post上传图片,PHP中使用CURL发送get/post请求上传图片批处理功能

    cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get   post请求,文件上传. 在php中建立curl的基本步骤如下: 1.初始化 2. ...

  3. curl取跳转地址 php_用PHP如何实现解析抖音无水印视频

    很多时候你在douyin里看到了一个短视频,想复制下来自己编辑文字来发布,可是视频里的水印却是原者的.这个时候你想把水印去掉,你要如何做呢?这里提供PHP实现去除水印的主要方法,其实很简单. 使用方法 ...

  4. php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决

    PHP Curl https跳过ssl证书认证报错记录及解决 function get($url = '', $cookie = '') { $ch = curl_init(); curl_setop ...

  5. curl命令详解 (curl -I)

    转 https://www.cnblogs.com/guixiaoming/p/8507268.html curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出&qu ...

  6. curl代理ippost php_php使用curl通过代理获取数据的实现方法

    本文实例讲述了php使用curl通过代理获取数据的实现方法.分享给大家供大家参考,具体如下: $curl=curl_init(); curl_setopt($curl, CURLOPT_URL, &q ...

  7. php curl登陆邮箱,php利用CURL函数登入163邮箱并获取自己的通讯录

    我们使用phpmailer登录邮件发邮件也是使用了curl原理来实现模仿用户发邮件了,今天看了两个利用CURL函数登入163邮箱并获取自己的通讯录的例子,希望对各位有帮助. 学习了一些CURL的基础知 ...

  8. php把服务器文件curl提交,php中使用curl进行文件上传的巨坑

    我是一个兼职后端的前端程序员. 我用laravel写了一套微信公众平台管理系统.有一个需求是,切换了开发模式之后,要将一些需要自动回复的图片先push到微信自己的服务器上,换回media_id,然后用 ...

  9. 【curl】【php】curl报错,错误代码77,CURLE_SSL_CACERT_BADFILE (77)解决方法

    [curl][php]curl报错,错误代码77,CURLE_SSL_CACERT_BADFILE (77)解决方法 参考文章: (1)[curl][php]curl报错,错误代码77,CURLE_S ...

最新文章

  1. 数据治理(三):数据质量管理
  2. 10行代码实现目标检测,请收下这份教程
  3. [kuangbin带你飞]专题六-生成最小树
  4. 波士顿动力机器人齐秀舞姿,这是要成团出道?
  5. windows下安装python
  6. Spring Cloud Gateway(五):路由定位器 RouteLocator
  7. 团队项目第一篇——NABCD
  8. 巧用脚本为木马“整容”
  9. .net测试篇之单元测试/集成测试神器Autofixture
  10. js for in遍历对象_JS中轻松遍历对象属性的几种方式
  11. 基于Oracle的SQL优化(社区万众期待 数据库优化扛鼎巨著)
  12. 【渝粤教育】国家开放大学2019年春季 1396药事管理与法规(本) 参考试题
  13. Structs 2 session 学习
  14. png图像保存为yuv格式以及yuv格式转为png
  15. Java鸿鹄_(五)Java版Spring Cloud B2B2C o2o鸿鹄云商平台--技术框架3
  16. win32简单只读文件程序
  17. 置信区间、显著性检验和统计学意义
  18. 软件测试常见笔试题(附带答案)—初级篇01
  19. Apache-drill Architechture
  20. 使用域名注册服务 Domains配置域名【华为云至简致远】

热门文章

  1. 这款可视化工具,Java 调优起来真的 so easy啊
  2. 每日一皮:进来说说昨天你是怎么过的?
  3. 让 Linux 防火墙新秀 nftables 为你的 VPS 保驾护航
  4. Spring Security 实战干货:实现自定义退出登录
  5. 不努力提高效率,小姐姐都被人追走了:K8S一键部署了解一下?
  6. 脆弱的Scrum,敏捷在哪里?
  7. oracle如何降低逻辑读,如何降低该SQL的逻辑读
  8. paddleocr 训练自己的数据
  9. vs2017 release模式断点调试
  10. pytorch方法测试——卷积(二维)