最近開發(fā)過程中,接口調(diào)試時發(fā)現(xiàn)客戶端收到的數(shù)據(jù)總是不完整,追蹤代碼發(fā)現(xiàn)在TcpConnection.php中
$len = @fwrite($this->_socket, $send_buffer, 8192);
socket最大發(fā)送8192字節(jié),超出的部分就丟掉不發(fā)了,有什么辦法修改嗎?這是workerman的BUG嗎?
超過的部分會在緩沖區(qū)里,等socket可寫時繼續(xù)發(fā)送。
緩沖區(qū)默認(rèn)大小1M,緩沖區(qū)滿并且仍然發(fā)送數(shù)據(jù)則數(shù)據(jù)會被丟棄。
http://doc.workerman.net/worker/on-buffer-full.html
看下是不是因?yàn)榫彌_區(qū)滿了仍然寫導(dǎo)致
寫入大于8192的數(shù)據(jù),需要add,然后出現(xiàn) PHP Warning: event_set(): 'Array' is not a valid callback ,造成后面的數(shù)據(jù)沒有發(fā)送完
Worker::$globalEvent->add($this->_socket, EventInterface::EV_WRITE, array($this, 'baseWrite'));