码迷,mamicode.com
首页 > Web开发 > 详细

curlmulti-PHP

时间:2015-10-20 18:05:36      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

关于

这是目前最好的php curl类库,很多开发者基于此库开发项目。类库是对curl_multi_*系列函数的封装,性能、扩展性、易用性、性能都是最高水平,很强大。

需求

PHP 5.1.0 +

特性

  1. 极低的CPU和内存使用率。

  2. 速度在程序层面最高(测试抓取html速度达到2000+页每秒,下载速度1000Mbps。

  3. 内部原生下载支持(使用curl文件下载回调,性能最高)。

  4. 支持全局并发设置和根据任务类型单独设置并发。

  5. 支持状态回调,运行中的所有信息都被返回,包括单独的每个任务信息。

  6. 支持通过回调添加任务。

  7. 支持用户自定义回调,可以在回调中做任何事情。

  8. 支持任务完成回退,用于等待先决条件完成。

  9. 支持全局错误回调和单独任务的错误回调,所有和错误相关的信息都被返回。

  10. 支持内部全自动重试。

  11. 支持用户参数任意传递。

  12. 支持CURLOPT_*全局设置和单个任务设置。

  13. 强大的内置缓存,可以设置全局缓存和单独任务缓存。

  14. 所有配置可以在运行中动态改变并生效!

  15. 基于此库你可以开发各种厉害的CURL应用。

运行机制

没有pthreads扩展支持,php是单线程顺序执行的,所以本类库大量使用回调函数。类库只有两个常用的方法,add()和start(),add()添加一个任务到内部任务池,start()开始以$maxTrhead设置的并发数进行回调循环,此方法是阻塞的直到所有任务完成。如果有大量的任务需要处理,使用$cbTask指定添加任务的回调函数,当并发不足并且任务池为空时此回调函数被调用。当一个任务完成之后add()中执行的处理回调立刻被执行,然后curl从任务池取一个任务添加到并发请求中。所有任务完成后start()函数结束。

地址:https://github.com/ares333/curlmulti


curlmulti-PHP

标签:

原文地址:http://my.oschina.net/u/2440057/blog/519423

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!