文字

event_buffer_timeout_set

(PECL libevent >= 0.0.1)

event_buffer_timeout_setSet read and write timeouts for a buffered event

说明

void event_buffer_timeout_set ( resource $bevent , int $read_timeout , int $write_timeout )

Sets the read and write timeouts for the specified buffered event.

参数

bevent

Valid buffered event resource.

read_timeout

Read timeout (in seconds).

write_timeout

Write timeout (in seconds).

用户评论:

[#1] john at collabriasoftware dot com [2012-03-24 02:38:53]

On timeout the error callback is executed. This can be very valuable if you wanted to monitor inactivity on a socket.

You also need to use event_buffer_enable if you wanted to re-use the event listener.

Example:

<?php
function print_line($buf$arg)
{
    static 
$max_requests;

    
$max_requests++;

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

    
// print the line
    
echo event_buffer_read($buf4096);
}

function 
error_func($buf$what$arg)
{
    
// If this was a read timeout
    
if ($what == (EVBUFFER_READ EVBUFFER_TIMEOUT)) {
        echo 
'5 seconds of inactivity'."\n";

        
// Control timeout features
        //    Could ping the client, or even disconnect the client if you really wanted to.
        //    --- ETC

        // Restart our event loop on this buffer
        
event_buffer_enable($bufEV_READ);
    }
}

$base event_base_new();
$eb event_buffer_new(STDIN"print_line"NULL"error_func"$base);

// Timeout after 5 seconds of inactivity
event_buffer_timeout_set($eb5NULL);
event_buffer_base_set($eb$base);
event_buffer_enable($ebEV_READ);

event_base_loop($base);

?>

上一篇: 下一篇: