web服务器 http协议发送几M数据 客户端接受不完整

shuishangmu

最近开发过程中,接口调试时发现客户端收到的数据总是不完整,追踪代码发现在TcpConnection.php中
$len = @fwrite($this->_socket, $send_buffer, 8192);

socket最大发送8192字节,超出的部分就丢掉不发了,有什么办法修改吗?这是workerman的BUG吗?

3170 1 0
1个回答

walkor

超过的部分会在缓冲区里,等socket可写时继续发送。
缓冲区默认大小1M,缓冲区满并且仍然发送数据则数据会被丢弃。
http://doc.workerman.net/worker/on-buffer-full.html
看下是不是因为缓冲区满了仍然写导致

  • ocean 2019-01-13

    写入大于8192的数据,需要add,然后出现 PHP Warning: event_set(): 'Array' is not a valid callback ,造成后面的数据没有发送完
    Worker::$globalEvent->add($this->_socket, EventInterface::EV_WRITE, array($this, 'baseWrite'));

年代过于久远,无法发表回答
🔝