总有人间一两风,填我十万八千梦

PHP event_buffer_timeout_set 用法 手册 | 示例代码

PHP开发手册 归档 384℃ 0评论

event_buffer_timeout_set

(PECL libevent >= 0.0.1)

event_buffer_timeout_setSet read and write timeouts for a buffered event

说明

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

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).

用户贡献的笔记

john at collabriasoftware dot com

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($buf, 4096);
}

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($buf, EV_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($eb, 5, NULL);
event_buffer_base_set($eb, $base);
event_buffer_enable($eb, EV_READ);

event_base_loop($base);

?>

转载请注明:悠然品鉴 » PHP event_buffer_timeout_set 用法 手册 | 示例代码

喜欢 (0)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址