php多线程foreach,php中foreach curl实现多线程例子
多线程是php不支持的但我们可以通过foreach来伪多线程了,但这个伪多线程速度不一定比单线程要单到哪里去了,具体来看个例子。
在利用foreach语句循环图片URL,并通过CURL将所有图片进行本地保存的函数时 ,出现了只能采集到一个的问题。现将foreach和CURL结合进行多URL请求的方法进行下总如。
方法1:循环请求
$sr=array(url_1,url_2,url_3);
foreach ($sr as $k=>$v) {
$curlPost=$v.'?f=传入参数';
$ch = curl_init($curlPost) ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
$data = curl_exec($ch) ;
echo $k.'##:'.$data.'
';
}
curl_close($ch);
上面代码需要特别注意的是,curl_close 一定要放在foreach循环结束的外面,如果放在里面的话,就会出现我上面提到的多个IMGURL ,只能采集到一个URL的问题。
方法2:多线程循环
multi_threads_request($nodes){
$mh = curl_multi_init();
$curl_array = array();
foreach($nodes as $i => $url)
{
$curl_array[$i] = curl_init($url);
curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $curl_array[$i]);
}
$running = NULL;
do {
usleep(10000);
curl_multi_exec($mh,$running);
} while($running > 0);
$res = array();
foreach($nodes as $i => $url)
{
$res[$url] = curl_multi_getcontent($curl_array[$i]);
}
foreach($nodes as $i => $url){
curl_multi_remove_handle($mh, $curl_array[$i]);
}
curl_multi_close($mh);
return $res;
}
print_r(multi_threads_request(array(
'http://www.jquerycn.cn',
'http://qq.jquerycn.cn',
));
这里主要利用curl_multi_init()实现多个url 的请求,不过由于php自身并不支持多线程。所以伪多线程速度也不见得会比单线程快。
php多线程foreach,php中foreach curl实现多线程例子相关推荐
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...
- php输出学生成绩foreach,PHP中foreach输出值不正确
需要达成在一个页面a.html输入成绩或是学号传递给另一个php文件b.php查询对应的学号或是成绩. 从一个网页向该文件传递学生学号stuNum,成绩grade,隐藏表单的标记flag b.php代 ...
- python 多线程 类_Python中如何自定义一个多线程类呢?
摘要: 下文讲述Python中自定义一个多线程类的方法分享,如下所示: 实现思路: 1.定义一个类继承threading.Thread 2.在自定义类中构造函数重写run方法 例: Python3中自 ...
- python如何使用多线程_Python 类中的方法如何多线程调用?
这么写直接弹框报python运行出错,/尴尬,那这个怎么多线程调用getA/getB/getC/getD/getE呢?每次传参还要循环个arg2list列表 class ThreadTest(): d ...
- php curl 模拟多线程,php利用curl 多线程 模拟 并发的详解
php利用curl 多线程 模拟 并发的详解 发布于 2014-12-07 10:17:25 | 265 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypert ...
- php foreach是什么,php中foreach的用法是什么
php中foreach的用法是:[foreach ($array as $value) {要执行代码;}],每进行一次循环,当前数组元素的值就会被赋值给$value变量,在进行下一次循环时,将得到数组 ...
- 如何确定foreach循环中的第一次和最后一次迭代?
问题很简单. 我的代码中有一个foreach循环: foreach($array as $element) {//code } 在这个循环中,我想在第一次或最后一次迭代时做出不同的反应. 这该怎么做? ...
- js数组中forEach/some/every/map/filter/reduce的区别
2019独角兽企业重金招聘Python工程师标准>>> // js数组中forEach/some/every/map/filter/reduce的区别// 1. foreach:就是 ...
- 原生php使用foreach,如何使用php中foreach()
如何使用php中foreach() 发布时间:2020-07-28 09:51:21 来源:亿速云 阅读:91 作者:Leah 本篇文章给大家分享的是有关如何使用php中foreach(),小编觉得挺 ...
最新文章
- 在QTP中申明XPath
- 华为秘密作战计划曝光,重注研发AI芯片挑战英伟达,轮值董事长挂帅
- C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用...
- torch.nn.BCELoss are unsafe to autocast
- 动手为王 | Oracle 数据库跨版本升级迁移实践
- [读书笔记] - 《深度探索C++对象模型》第3章 Data语意学
- python自动压图贴图到Excel小工具
- fatal: HttpRequestException encountered (附:网盘下载地址)
- 第六章 jQuery中的Ajax应用
- 抽奖滚动文字如何透明地覆盖在动态视频背景上?-活动现场双屏管理系统操作提示
- 【语料库】语料库资源汇总
- mpdf配置自定义字体
- 【转】Java线程池实现原理及其在美团业务中的实践
- liunx机器开放8080端口
- H5 简单实现微信公众号摇一摇功能
- pgsql之Comment命令
- zabbix 参数 脚本_zabbix 自定义脚本短信报警
- uniapp小程序src引用服务器图片时全局变量与图片路径拼接
- [置顶]我的2011体会--不是每个程序员都是适合创业,即使你工作了十年
- [收藏|转贴]货币金额大写转换库(C#)