Coroutine\Socket->sendAll
最后更新于:2022-04-02 06:28:21
# Coroutine\\Socket->sendAll
[TOC] > 需要版本v4.3.0及以上
向对端发送数据, 与send方法不同的是, sendAll会尽可能完整地发送数据, 直到成功发送全部数据或遇到错误中止。
function Coroutine\Socket->sendAll(string $data, double $timeout = -1) : int | false;
参数
$data
:要发送的数据内容,可以为文本或二进制数据$timeout
:设置超时时间,默认为-1
表示永不超时
sendAll
方法会立即执行多次send
系统调用发送数据,当send
系统调用返回错误EAGAIN
时,底层将自动监听可写事件,并挂起当前协程,等待可写事件触发时,重新执行send
系统调用发送数据, 直到数据发送完成或遇到错误, 唤醒对应协程。
返回值
- 发送成功返回写入的字节数,请注意实际写入的数据仍可能小于
$data
参数的长度,应用层代码需要对比返回值与strlen($data)
是否相等来判断是否发送完成 - 发送失败返回
false
,并设置errCode
属性