public function register() { $listener = new Listener($this->event, $this->bind->getSocket(), \Event::READ | \Event::PERSIST); $listener->register(static::EVENT_SOCKET_ACCEPT); $listener->listen(); $listener = Listener::timer($this->event, true); $listener->register(static::EVENT_TIMER); $listener->listen(1); }
public function write($content) { if (!$this->status) { $this->buffer = $content; $listener = new Listener($this->event, $this->socket, \Event::WRITE); $listener->register(static::EVENT_BUFFER_SEND); $listener->listen(); } else { if (strlen($content) + strlen($this->buffer) <= $this->size) { $this->buffer .= $content; } else { // If buffer filled $time = (int) (strlen($content) / $this->size); socket_write($this->socket, $this->buffer); for ($i = 0; $i < $time; ++$i) { socket_write($this->socket, substr($content, $i * $this->size, $this->size)); } $this->buffer = substr($content, $this->size * $time); } } }