發(fā)送小于8192的數(shù)據(jù),沒有問題。
當(dāng)數(shù)據(jù)大于8192,通過回調(diào)繼續(xù)發(fā)送,但是在添加回調(diào)時,會出現(xiàn)PHP?Warning,回調(diào)添加失敗,造成后面的數(shù)據(jù)沒有發(fā)送。
添加回調(diào)代碼
Worker::$globalEvent->add($this->_socket, EventInterface::EV_WRITE, array($this, 'baseWrite'));
出現(xiàn)的PHP Warning
Warning: event_set(): 'Array' is not a valid callback in /****/vendor/workerman/workerman/Events/Libevent.php on line 106 event_del_: event has no event_base set.
?
Linux:Centos , php,libevent信息
libevent support => enabled
extension version => 0.1.0
Revision => $Revision$
libevent version => 2.1.8-stable
Worker::$globalEvent->add($this->_socket, EventInterface::EV_WRITE, array($this, 'baseWrite'));這句是你手動調(diào)用的?
是否更改了workerman代碼?
?
TcpConnection send方法中的代碼
if ($this->_sendBuffer === '') {
$len = @fwrite($this->_socket, $send_buffer , 8192);
// send successful.
if ($len === strlen($send_buffer)) {
return true;
}
// Send only part of the data.
if ($len > 0) {
$this->_sendBuffer = substr($send_buffer, $len);
} else {
// Connection closed?
if (!is_resource($this->_socket) || feof($this->_socket)) {
self::$statistics['send_fail']++;
if ($this->onError) {
try {
call_user_func($this->onError, $this, WORKERMAN_SEND_FAIL, 'client closed');
} catch (\Exception $e) {
Worker::log($e);
exit(250);
} catch (\Error $e) {
Worker::log($e);
exit(250);
}
}
$this->destroy(self::DESTROY7);
return false;
}
$this->_sendBuffer = $send_buffer;
}
Worker::$globalEvent->add($this->_socket, EventInterface::EV_WRITE, array($this, 'baseWrite'));