关于
这是目前最好的php curl类库,很多开发者基于此库开发项目。类库是对curl_multi_*系列函数的封装,性能、扩展性、易用性、性能都是最高水平,很强大。
需求
PHP 5.1.0 +
特性
- 极低的CPU和内存使用率。
- 速度在程序层面最高(测试抓取html速度达到2000+页每秒,下载速度1000Mbps。
- 内部原生下载支持(使用curl文件下载回调,性能最高)。
- 支持全局并发设置和根据任务类型单独设置并发。
- 支持状态回调,运行中的所有信息都被返回,包括单独的每个任务信息。
- 支持通过回调添加任务。
- 支持用户自定义回调,可以在回调中做任何事情。
- 支持任务完成回退,用于等待先决条件完成。
- 支持全局错误回调和单独任务的错误回调,所有和错误相关的信息都被返回。
- 支持内部全自动重试。
- 支持用户参数任意传递。
- 支持CURLOPT_*全局设置和单个任务设置。
- 强大的内置缓存,可以设置全局缓存和单独任务缓存。
- 所有配置可以在运行中动态改变并生效!
- 基于此库你可以开发各种厉害的CURL应用。
运行机制
没有pthreads扩展支持,php是单线程顺序执行的,所以本类库大量使用回调函数。类库只有两个常用的方法,add()和start(),add()添加一个任务到内部任务池,start()开始以$maxTrhead设置的并发数进行回调循环,此方法是阻塞的直到所有任务完成。如果有大量的任务需要处理,使用$cbTask指定添加任务的回调函数,当并发不足并且任务池为空时此回调函数被调用。当一个任务完成之后add()中执行的处理回调立刻被执行,然后curl从任务池取一个任务添加到并发请求中。所有任务完成后start()函数结束。
地址:https://github.com/ares333/curlmulti
时间: 2024-09-29 01:55:54