协程客户端超时规则
最后更新于:2022-04-02 06:29:59
# 协程客户端超时规则
[TOC]
> 在Swoole版本>=4.2.10生效
为了统一各个客户端混乱的超时规则, 避免开发者需要处处谨慎设置, 从4.2.10版本开始所有协程客户端统一超时规则如下:
## 全局Socket超时配置项
以下配置项可通过`Co::set`方法配置, 如
~~~
Co::set([
'socket_connect_timeout' => 1,
'socket_timeout' => 5
]);
~~~
* `socket_connect_timeout`, 建立socket连接超时时间,**默认为`1`(秒)**
* `socket_timeout`, socket读写操作超时时间,**默认为`-1`, 即永不超时**
**即: 所有协程客户端默认连接超时时间为1s, 其他读写操作若未指定超时时间则永不超时**
## 超时时间设置规则
* `-1`: 永不超时
* `0`: 不更改超时时间
* `其它大于0的值`: 设置相应秒数的超时定时器, 最大精度为1毫秒
## 生效范围
* Co::set => 全局
* 通过set等方法设置的 => 被设置的客户端
* 读写方法的函数传参 => 方法调用的读写操作
## 注意
文档中旧有的, 与此有出入的超时时间设定规则, 皆以此规则为准
## PHP官方网络库超时
在Swoole中很多PHP官方提供的网络库API也可以协程化变成异步非阻塞IO, 它们的超时时间受[`default_socket_timeout`](http://php.net/manual/zh/filesystem.configuration.php)配置影响, 开发者可以通过`ini_set('default_socket_timeout', 60)`这样来单独设置它, 它的默认值是60.
';