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一节。