- Coroutine\Http\Client
- Saber - 人性化的协程HTTP客户端封装库
- 启用协程Http客户端
- 构造方法
- 使用实例
- defer特性
- 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-Chunk、Keep-Alive特性,支持form-data格式 - Http协议版本为
HTTP/1.1 - 支持升级为websocket客户端
gzip压缩格式支持需要依赖zlib库(默认都有)
构造方法
function Swoole\Coroutine\Http\Client->__construct(string $host, int port, bool $ssl = false);
$host目标服务器主机地址,可以为IP或域名,底层自动进行域名解析$port目标服务器的端口,一般http为80,https为443$ssl是否启用SSL/TLS隧道加密,如果目标服务器是https必须设置$ssl参数为true
使用实例
$cli = new Swoole\Coroutine\Http\Client('127.0.0.1', 80);$cli->setHeaders(['Host' => "localhost","User-Agent" => 'Chrome/49.0.2587.3','Accept' => 'text/html,application/xhtml+xml,application/xml','Accept-Encoding' => 'gzip',]);$cli->set([ 'timeout' => 1]);$cli->get('/index.php');echo $cli->body;$cli->close();
- 如果未设置
timeout,则将底层connect和request超时设置为默认的500ms
defer特性
请参考并发Client一节。
