Exemple #1
0
function connect_dest()
{
    global $read_timeout, $write_timeout;
    echo "connect dest...\n";
    global $base;
    $buffer = new EventBufferEvent($base, NULL, EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS, 'readcb', null, 'eventcb', $base);
    $buffer->enable(Event::READ);
    $buffer->setTimeouts($read_timeout, $write_timeout);
    $buffer->connect('127.0.0.1:8000');
    $buffer->write('client data, ' . time());
}
Exemple #2
0
function send_data()
{
    global $count;
    global $url, $port;
    global $base;
    $pid = posix_getpid();
    $rand = random();
    $data = time() . "-{$rand}-{$pid}-{$count}";
    $bev = new EventBufferEvent($base, null, EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS);
    $bev->setTimeouts(3, 3);
    $bev->setCallbacks('readcb', null, 'eventcb', $pid);
    $bev->enable(Event::READ | Event::WRITE);
    $bev->connect("{$url}:{$port}");
    $bev->write($data . "\r\n");
    $base->dispatch();
    lg("[{$pid}] {$data}");
    //lg("pid:{$pid},count:{$count}");
    exit(0);
}
Exemple #3
0
<?php

error_reporting(E_ALL);
$base = new EventBase();
$buffer = new EventBufferEvent($base, NULL, EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS, 'readcb', 'writecb', 'eventcb', $base);
$buffer->enable(Event::READ);
$buffer->setTimeouts(3, 3);
$buffer->connect('127.0.0.1:8000');
$base->dispatch();
function readcb($buffer, $base)
{
    echo "read running...\n";
    $data = '';
    while ($read = $buffer->read(1024)) {
        $data .= $read;
    }
    echo 'read input buffer, data: ', $data, PHP_EOL;
    $body = "client.hello";
    $length = strlen($body);
    $buffer->write($body);
}
function writecb($buffer, $base)
{
    echo "write running...\n";
    free($buffer, $base);
    echo "close client.\n";
}
function eventcb($buffer, $events, $base)
{
    echo "event running, status: {$events}\n";
    if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {
Exemple #4
0
}
// Event callback
function eventcb($bev, $stat, $base)
{
    var_dump('status: ' . $stat);
    if ($stat & EventBufferEvent::CONNECTED) {
        echo "Connected.\n";
    } elseif ($stat & (EventBufferEvent::ERROR | EventBufferEvent::EOF)) {
        if ($stat & EventBufferEvent::ERROR) {
            echo "DNS error: ", $bev->getDnsErrorString(), PHP_EOL;
        }
        echo "Closing\n";
        $base->exit();
        exit("Done\n");
    } elseif ($stat & EventBufferEvent::TIMEOUT) {
        echo "Timeout\n";
    }
}
function writecb($bev, $base)
{
    echo "writecb\r\n";
    $bev->output->add(microtime(true) . "\r\n");
}
$base = new EventBase();
$bev = new EventBufferEvent($base, null, EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::TIMEOUT, "readcb", null, "eventcb", $base);
//"readcb", "writecb", "eventcb", $base);
$bev->enable(Event::READ | Event::WRITE);
$bev->getOutput()->add(microtime(true) . "\r\n");
$bev->setTimeouts(2, 2);
$bev->connect('127.0.0.1:8000');
$base->dispatch();