curlmulti-PHP

关于

这是目前最好的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

时间: 2024-09-29 01:55:54

curlmulti-PHP的相关文章

pycurl 异步请求

#!/usr/bin/python # coding:utf8 from __future__ import division import pycurl import simplejson as json try:     import signal     from signal import SIGPIPE, SIG_IGN     signal.signal(signal.SIGPIPE, signal.SIG_IGN) except ImportError:     pass def 

自己写的php curl库实现整站克隆

有时候常常会用到一些在线手冊,比方国内或国外的.有些是訪问速度慢,有些是作者直接吧站点关闭了,有些是server总是宕机.所以还是全盘克隆到自己server比較爽.所 已这里给了一个demo <?php class Controller_Spider extends MyYaf_Controller_Base{ function init(){ parent::init(); if(!$this->getRequest()->isCli()){ Ares_Http::error403()

PHP cURL 应用

对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有 file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情 景,file_get_contents显得有点无能为力.因此,本文将为你介绍采集神器cURL的使用. 工具 火狐浏览器(FireFox) + Firebug “工欲善其事,必先利其器.” 在分析案例之前,先让我们学习一下如何利用神器Firebug获取我们必要的信息. 使用F12打开Firebug,我们可以得到如图(一)界

python + pycurl + 高效批量get请求

pycurl包是用C编写的libcurl  python接口,速度高于urllib.Libcurl 是一个支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 和 LDAP的客户端URL传输库.libcurl也支持HTTPS认证,HTTP POST,HTTP PUT,FTP上传,代理,Cookies,基本身份验证,FTP文件断点继传,HTTP代理通道等等. def doBatchGet(url_list): """批量get

pycurl,Python cURL library

pycurl — A Python interface to the cURL library Pycurl包是一个libcurl的Python接口.pycurl已经成功的在Python2.2到Python2.5版编译测试过了. Libcurl是一个支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 和 LDAP的客户端URL传输库.libcurl也支持HTTPS认证,HTTP POST,HTTP PUT,FTP上传,代理,Cookies,基

推荐一个curl库,实现整站克隆功能

有时候经常会用到一些在线手册,比如国内或国外的,有些是访问速度慢,有些是作者直接吧网站关闭了,有些是服务器总是宕机,所以还是全盘克隆到自己服务器比较爽, 这里给大家推荐接触过的一个CURL库,可以实现整站克隆功能,对于复制一些手册站点还是非常实用的. 库特点: 给定一初始连接,初始链接以下的层级所有文件会拷贝到本地. 多次克隆可以配置是否覆盖. 可以配置是否下载图片. 所有链接替换为相对链接,所以可以随便rewrite. 绝对不会出现文件覆盖等问题. 克隆结果展示(这个克隆操作几秒钟就完成了):

转python版本的curl工具pycurl学习

一 pycurl介绍 pycurl模块为libcurl库提供了一个python接口.libcurl是一个开源免费且方便快捷的基于客户端的url传输库,支持FTP,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP等等.libcurl还支持SSL认证,HTTP POST,HTTP PUT,FTP UPLOADING等等.和urllib模块类似,pycurl模块也可以用来获取一个url的对象.pycurl使用了大部分libcurl提供的

curl抓取

<?phpheader("content-type:text/html;charset=utf8");set_time_limit(0); //=================================工具函数=====================function real_url($current_url, $base_url='') {    $data = parse_url($current_url);    if ( ! isset($data['host'