Coroutine\Client->recv

最后更新于:2022-04-02 06:27:02

# Coroutine\\Client->recv [TOC] `recv`方法用于从服务器端接收数据。底层会自动`yield`,等待数据接收完成后自动切换到当前协程。 ~~~ function Coroutine\Client->recv(float $timeout = -1) : string; ~~~ * `recv`方法,不接受长度参数 * 设置了通信协议,`recv`会返回完整的数据,长度受限于`package_max_length` * 未设置通信协议,`recv`最大返回`64K`数据 * 未设置通信协议返回原始的数据,需要`PHP`代码中自行实现网络协议的处理 * 服务端主动关闭连接,`recv`返回空字符串 * `recv`操作需要进行一次协程切换,在收到数据后进行`resume` * `$timeout`设置超时,单位为秒,浮点型,需要`2.1.2`或更高版本 ## 超时设置 * 传入了`$timeout`,优先使用制定的`timeout`参数 * 未传入`$timeout`,但在`connect`时指定了超时时间,自动以`connect`超时时间作为`recv`超时时间 * 未传入`$timeout`,未设置`connect`超时,将设置为`-1`表示永不超时 * 发生超时的错误码为`ETIMEDOUT`
';