Example #1
0
<?php

error_reporting(E_ALL);
$base = new EventBase();
$listener = new EventListener($base, 'callback_accept', $base, EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE, -1, "127.0.0.1:8000");
$listener->setErrorCallback('callback_accept_error');
$base->dispatch();
function callback_accept($listener, $fd, $address, $base)
{
    echo "accept running...\n";
    $buffer = new EventBufferEvent($base, $fd, EventBufferEvent::OPT_CLOSE_ON_FREE);
    $buffer->setCallbacks('callback_read', 'callback_write', 'callback_event', $base);
    $buffer->setTimeouts(3, 3);
    $buffer->enable(Event::READ);
    $data = 'server.hello';
    $length = strlen($data);
    $buffer->write($data);
    echo "write output buffer, data: server.hello({$length})\n";
}
function callback_accept_error($listener, $base)
{
    echo "accept error running...\n";
    fprintf(STDOUT, "Got an error %d (%s) on the listener. Shutting down.\n", EventUtil::getLastSocketErrno(), EventUtil::getLastSocketError());
    $base->exit();
}
function callback_read($buffer, $base)
{
    echo "read running...\n";
    $data = '';
    while ($read = $buffer->read(1024)) {
        $data .= $read;