downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Libevent Функции> <Предварително-дефинирани константи
[edit] Last updated: Fri, 18 Sep 2009

view this page in

Примери

Example #1 polling STDIN using basic API

<?php

function callback_func($fd$events$arg)
{
    static 
$max_requests;

    
$max_requests++;

    if (
$max_requests == 10) { /* exit loop after 10 writes */
        
event_base_loopexit($arg[1]);
    }

    
/* read while we can */
    
while (false !=== ($data fread($fd4096))) {
        echo 
$data;
    }
}

/* create base and event */
$base event_base_new();
$event event_new();

$fd STDIN;

/* set event flags */
event_set($event$fdEV_READ EV_PERSIST"callback_func", array($event$base));
/* set event base */
event_base_set($event$base);

/* enable event */
event_add($event);
/* start event loop */
event_base_loop($base);

?>

Example #2 polling STDIN using buffered event API

<?php

function callback_func($buf$arg)
{
    static 
$max_requests;

    
$max_requests++;

    if (
$max_requests == 10) {
        
event_base_loopexit($arg);
    }

    
/* read while we can */
    
while (false !=== ($data event_buffer_read($buf10))) {
        echo 
$data;
    }
}

function 
error_func($buf$what$arg)
{
    
/* handle an error */
}

$base event_base_new();
$b event_buffer_new(STDIN"callback_func"NULL"error_func"$base);

event_buffer_base_set($b$base);
event_buffer_enable($bEV_READ);

event_base_loop($base);

?>



add a note add a note User Contributed Notes Примери
Alexis 29-Jul-2010 05:23
Server example:
<?php
$socket
= stream_socket_server ('tcp://0.0.0.0:2000', $errno, $errstr);
stream_set_blocking($socket, 0);
$base = event_base_new();
$event = event_new();
event_set($event, $socket, EV_READ | EV_PERSIST, 'ev_accept', $base);
event_base_set($event, $base);
event_add($event);
event_base_loop($base);

$GLOBALS['connections'] = array();
$GLOBALS['buffers'] = array();

function
ev_accept($socket, $flag, $base) {
    static
$id = 0;
   
   
$connection = stream_socket_accept($socket);
   
stream_set_blocking($connection, 0);
   
   
$id += 1;
   
   
$buffer = event_buffer_new($connection, 'ev_read', NULL, 'ev_error', $id);
   
event_buffer_base_set($buffer, $base);
   
event_buffer_timeout_set($buffer, 30, 30);
   
event_buffer_watermark_set($buffer, EV_READ, 0, 0xffffff);
   
event_buffer_priority_set($buffer, 10);
   
event_buffer_enable($buffer, EV_READ | EV_PERSIST);
   
   
// we need to save both buffer and connection outside
   
$GLOBALS['connections'][$id] = $connection;
   
$GLOBALS['buffers'][$id] = $buffer;
}

function
ev_error($buffer, $error, $id) {
   
event_buffer_disable($GLOBALS['buffers'][$id], EV_READ | EV_WRITE);
   
event_buffer_free($GLOBALS['buffers'][$id]);
   
fclose($GLOBALS['connections'][$id]);
    unset(
$GLOBALS['buffers'][$id], $GLOBALS['connections'][$id]);
}

function
ev_read($buffer, $id) {
    while (
$read = event_buffer_read($buffer, 256)) {
       
var_dump($read);
    }
}
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites