相关文章推荐
气宇轩昂的热水瓶  ·  Who can help me ...·  3 月前    · 
玩滑板的黄花菜  ·  测试 CORS - Amazon ...·  2 月前    · 
开朗的伤疤  ·  Can't install apps, ...·  2 月前    · 
淡定的葡萄  ·  新增功能 - 语音服务 - Azure ...·  1 年前    · 
至今单身的登山鞋  ·  新建项目时默认引入的v7依赖包冲突imple ...·  2 年前    · 
傲视众生的电影票  ·  Maven内置属性及使用_maven ...·  2 年前    · 
唠叨的紫菜汤  ·  【Pytorch学习笔记】6.关于Tenso ...·  2 年前    · 
玩命的吐司  ·  【THREE源码解析篇之其他】THREE.O ...·  2 年前    · 
Code  ›  浅谈php使用curl模拟多线程发送请求开发者社区
php 多线程 curl
https://cloud.tencent.com/developer/article/1724969
坐怀不乱的乌冬面
2 年前
砸漏
0 篇文章

浅谈php使用curl模拟多线程发送请求

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
砸漏
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 恩蓝脚本 > 浅谈php使用curl模拟多线程发送请求

浅谈php使用curl模拟多线程发送请求

作者头像
砸漏
发布 于 2020-10-21 13:18:30
2.2K 0
发布 于 2020-10-21 13:18:30
举报

每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求。php的curl多线程是通过不断调用curl_multi_exec来获取内容,这里举一个demo来模拟一次curl多线程并发操作。

//设置缓冲为0(也可以去php.ini设置)
ini_set('output_buffering', 0);
//打开输出缓冲区
ob_start();
//设置一个空数组
$curl_Arr=[];
//这里模拟20次请求
for($i=0;$i<20;$i++){
 //开启curl连接
 $curl_Arr[$i]=curl_init("http://XXXX/test.php");
 //CURLOPT_RETURNTRANSFER 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE;
 curl_setopt($curl_Arr[$i],CURLOPT_RETURNTRANSFER,1);
//创建批处理cURL句柄
$mh = curl_multi_init();
foreach($curl_Arr as $k =  $ch){
 //curl句柄入栈增加
 curl_multi_add_handle($mh,$ch);
$active = null;
while(count($curl_Arr) 0){
 //发起curl_multi请求
 @curl_multi_exec($mh,$active);
 foreach($curl_Arr as $k =  $ch){
  //获取句柄的返回值
  if($result[$k]= curl_multi_getcontent($ch)){
   //输出结果
   echo "$result[$k]\n";
   ob_flush();
   //把被释放的数据发送到浏览器
   flush();
   //关闭该句柄
   curl_multi_remove_handle($mh,$ch);
   unset($curl_Arr[$k]);
//关闭ouput_buffering机制
 
推荐文章
气宇轩昂的热水瓶  ·  Who can help me resolve "Unknown SSL protocol error"? - [Don't Starve Together] Dedicated Server Dis
3 月前
玩滑板的黄花菜  ·  测试 CORS - Amazon Simple Storage Service
2 月前
开朗的伤疤  ·  Can't install apps, cURL error 28: SSL connection timeout | SOLVED - ℹ️ Support - Nextcloud communit
2 月前
淡定的葡萄  ·  新增功能 - 语音服务 - Azure AI services | Microsoft Learn
1 年前
至今单身的登山鞋  ·  新建项目时默认引入的v7依赖包冲突implementation 'com.android.support:appcompat-v7:27.1.1'-CSDN博客
2 年前
傲视众生的电影票  ·  Maven内置属性及使用_maven 内置属性使用_wangjunjun2008的博客-CSDN博客
2 年前
唠叨的紫菜汤  ·  【Pytorch学习笔记】6.关于Tensor、Module内参数的dtype类型转换 | AI技术聚合
2 年前
玩命的吐司  ·  【THREE源码解析篇之其他】THREE.Object3D源码解析_GAMESLI-GIS的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号