• Coroutine\Http\Client
    • Saber - 人性化的协程HTTP客户端封装库
    • 启用协程Http客户端
    • 构造方法
    • 使用实例
      • defer特性

    Coroutine\Http\Client

    协程版Http客户端基于原生的AsyncIo中的异步Http客户端,基本的设置和使用方法和异步Http客户端一致,不在需要注册回调函数,只需要同步写法即可,使用方法和Swoole\Http\Client一致的此处不再列出,请参考 swoole\AsyncIO\异步Http/WebSocket客户端,对于使用有区别的函数,此处单独说明

    Swoole-2.0.0版本增加了对协程版Http客户端的支持。底层是用纯C编写,拥有超高的性能。

    Saber - 人性化的协程HTTP客户端封装库

    开发者可使用已封装的协程HTTP客户端Saber

    • 基于Swoole协程Client开发
    • 人性化使用风格, ajax.js/axios.js/requests.py用户福音, 同时支持PSR风格操作
    • 浏览器级别完备的Cookie管理机制, 完美适配爬虫/API代理应用
    • 请求/响应/异常拦截器
    • 多请求并发, 并发重定向优化
    • 连接池, 自动化复用长连接
    • 通道池(Chan): 最大连接数限制+无阻塞
    • HTTPS连接, CA证书自动化支持
    • HTTP/Socks5 Proxy支持
    • WebSocket连接支持
    • 毫秒级超时定时器
    • 自动化 编码请求/解析响应 数据
    • 响应报文自动编码转换
    • 异步超大文件上传/下载, 断点重传
    • 自动重试机制
    • 单次并发数控制
    • 多模式/超细粒度异常处理机制

    启用协程Http客户端

    • 不依赖任何第三方扩展库, 默认开启
    • 支持Http-ChunkKeep-Alive特性,支持form-data格式
    • Http协议版本为HTTP/1.1
    • 支持升级为websocket客户端
    • gzip压缩格式支持需要依赖zlib库(默认都有)

    构造方法

    1. function Swoole\Coroutine\Http\Client->__construct(string $host, int port, bool $ssl = false);
    • $host 目标服务器主机地址,可以为IP或域名,底层自动进行域名解析
    • $port 目标服务器的端口,一般http80https443
    • $ssl 是否启用SSL/TLS隧道加密,如果目标服务器是https必须设置$ssl参数为true

    使用实例

    1. $cli = new Swoole\Coroutine\Http\Client('127.0.0.1', 80);
    2. $cli->setHeaders([
    3. 'Host' => "localhost",
    4. "User-Agent" => 'Chrome/49.0.2587.3',
    5. 'Accept' => 'text/html,application/xhtml+xml,application/xml',
    6. 'Accept-Encoding' => 'gzip',
    7. ]);
    8. $cli->set([ 'timeout' => 1]);
    9. $cli->get('/index.php');
    10. echo $cli->body;
    11. $cli->close();
    • 如果未设置timeout,则将底层connectrequest超时设置为默认的500ms

    defer特性


    请参考并发Client一节。