通过上篇文章清楚了通过curl_multi_*函数可以一次请求多个url,但是也留下了问题,就是结果要等所有数据请求结束一起返回,才能逐个处理数据。优化代码,使先成功请求的url先返回处理结果,而不是等着所有一起返回。

  注意:这里相对于上一篇文章的模型,总体请求时间并不会太大改变,也许还会变慢(某个请求成功后返回处理数据耗时)。

//修改后的模型
do {while (($execrun = curl_multi_exec($mh, $running)) == CURLM_CALL_MULTI_PERFORM) ;//CURLM_OK只是意味着数据传送完毕或者没有数据 可传送if ($execrun != CURLM_OK)break;//curl_multi_info_read 查询批处理句柄是否单独的传输线程中有消息或信息返回。while ($done = curl_multi_info_read($mh)) {$info = curl_getinfo($done['handle']);$tmp_result = curl_multi_getcontent($done['handle']);$error = curl_error($done['handle']);curl_multi_remove_handle($mh, $done['handle']);var_dump($tmp_result);//可以观察到,只要有url请求成功,就会把数据返回生成文件。file_put_contents('curl_multi2.log',$tmp_result."\r\n\r\n\r\n\r\n",FILE_APPEND);}if ($running)curl_multi_select($mh);} while ($running);

  运行php脚本,很快就会看见 .log文件生成并且有对应数据,而不是整个请求结束才生成完整的log。

  参考:http://my.oschina.net/u/586648/blog/184020

curl模拟多线程抓取网页(优化)相关推荐

  1. php抓取curl下载文件,PHP 利用 Curl 函数实现多线程抓取网页和下载文件

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Cur ...

  2. Python 多线程抓取网页 牛人 use raw socket implement http request great

    Python 多线程抓取网页 - 糖拌咸鱼 - 博客园 Python 多线程抓取网页 最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术 ...

  3. Python 多线程抓取网页

    Python 多线程抓取网页 - 糖拌咸鱼 - 博客园 Python 多线程抓取网页 最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术 ...

  4. 【php】curl模拟登录抓取页面信息

    [php]curl模拟登录抓取页面信息 在本项目中,使用php抓取四川大学综合教务网站的成绩信息.课程信息以及登录用户的基本资料,解析数据并存入数据库,以实现对所得信息的进一步分析,并呈现给用户. 本 ...

  5. php curl与正则表达式抓取网页数据的例子

    php使用curl和 正则表达式抓取网页数据示例,这里是抓取某网站的小说. 利用 curl和正则表达式做的一个针对磨铁中文网非vip章节的小说抓取器,支持输入小说ID下载小说. 依赖项:curl 可以 ...

  6. Python多线程抓取网页图片地址

    mini-spider 功能描述: 多线程网络爬虫,爬取网页图片地址(也可提取其他特征的URL) 使用python开发一个迷你定向抓取器mini_spider.py,实现对种子链接的广度优先抓取,并把 ...

  7. python中模拟浏览器抓取网页(-)

    对于平时我们抓取网页的内容时,比较倾向于直接利用urllib进行抓取(这里我就基于python的2.7版本进行解说,对于python3之后的版本,是将python中的urllib和urllib2和并成 ...

  8. PHP实现多线程抓取网页

    来源:http://www.cnblogs.com/jyginger/archive/2010/07/20/1781516.html PHP 利用 Curl Functions 可以完成各种传送文件操 ...

  9. python多线程爬虫 爬取多个网页_Python 多线程抓取网页

    最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术的实现. 1.larbin的URL去重用的很高效的bloom filter算法: 2. ...

最新文章

  1. 力扣(LeetCode)刷题,简单题(第15期)
  2. R语言Kmeans聚类、抽取聚类簇:fpc包clusterboot函数通过bootstrap重采样的方法评估Kmeans聚类的稳定性、fpc包的kmeansruns函数通过CH准则和ASW获取最优K值
  3. 苹果为何加强云计算布局 汤换药也换?
  4. xp网吧用母盘制作说明
  5. 2013应届毕业生“京北方”校招应聘总结
  6. linux中断处理汇编入口,Linux中断处理体系结构分析(一)
  7. 浅谈shell中的clear命令实现
  8. 【工作总结】银行的等级架构
  9. 语言中能产生汉明窗吗_0—6岁幼儿的语言、秩序、情感、数学敏感期,有这些特点和表现...
  10. 为什么PostgreSQL是最先进的开源数据库
  11. 正向最大匹配中文分词算法
  12. 分享12306抢票心得-最终篇
  13. imx6ull设备树
  14. 最新华为EMUI 11.0.0 Mate40和Mate30成功安装Google play及谷歌套件(附带解决谷歌弹窗)的方法
  15. notifyIcon 用法
  16. 蓝桥02 等差素数列 ——数论知识
  17. 联邦学习拜占庭鲁棒差分隐私博弈论
  18. 学习线性代数-行列式 笔记(一)
  19. js的tree转数组
  20. 猜猜我是谁(猜数游戏)

热门文章

  1. Mysql中设置默认时间为当前值
  2. ubuntu服务器常见使用技巧及-kill掉后GPU显存不释放进程-
  3. 直接通过Binder的onTransact完成跨进程通信
  4. 鹅厂bugly应用升级不能安装(Android7.0的新变化)
  5. Kamailio v4.4.6 发布,开源 SIP 服务器
  6. 毕飞宇:我是靠阅读支撑起来的作家 因为生活没有给我那么多
  7. linux之权限和chmod、chown命令
  8. Effective C# 原则13:用静态构造函数初始化类的静态成员(译)
  9. MySQL 和 Innobackup 不定期卡住的秘密
  10. React.js 小书 Lesson12 - state vs props