Client->recv
此方法用于从服务器端接收数据。函数原型为:
function Client->recv(int $size = 65535, int $flags = 0) : string | false
参数
$size
,接收数据的缓存区最大长度,此参数不要设置过大,否则会占用较大内存flags
,可设置额外的参数,如Client::MSG_WAITALL
是否等待所有数据到达后返回
MSG_WAITALL
- 如果设定了
Client::MSG_WAITALL
参数就必须设定准确的$size
,否则会一直等待,直到接收的数据长度达到$size
- 未设置
Client::MSG_WAITALL
时,$size
最大为64K
- 如果设置了错误的
$size
,会导致recv
超时,返回 false
MSG_PEEK
窥视数据,不会从缓存区中清空,下一次调用recv
时依然会读取到。
返回值
- 成功收到数据返回字符串
- 连接关闭返回空字符串
- 失败返回 false,并设置
$client->errCode
属性
EOF/Length
客户端启用了EOF/Length
检测后,无需设置$size
和$waitall参数。扩展层会返回完整的数据包或者返回false
。
- 当收到错误的包头或包头中长度值超过
package_max_length
设置时,recv
会返回空字符串,PHP
代码中应当关闭此连接