>  기사  >  php教程  >  이벤트의 지속 가능성에 대해

이벤트의 지속 가능성에 대해

大家讲道理
大家讲道理원래의
2016-11-11 09:23:281403검색

이벤트 지속성에 대하여
기본적으로 보류 중인 이벤트가 활성화될 때마다(해당 fd가 읽거나 쓸 준비가 되었거나 제한 시간이 만료되었기 때문에) 콜백 함수에서 실행됩니다. 보류되지 않는 이벤트가 됩니다. 실행 전. 이벤트를 다시 보류하려면 콜백 함수 내에서 event_add()를 호출해야 합니다.
이벤트가 EV_PERSIST로 설정된 경우 이벤트는 지속됩니다. 즉, 콜백 함수가 실행되더라도 이벤트는 보류 상태로 유지됩니다. 보류 중이 아닌 상태로 두려면 콜백 함수에서 event_del()을 호출하면 됩니다.

이벤트의 콜백 함수가 실행될 때마다 지속 이벤트의 시간 초과 상태가 재설정됩니다. 따라서 이벤트에 EV_READ/EV_PERSIST가 있고 5초 제한 시간이 설정된 경우 이 이벤트를 트리거하는 두 가지 상황이 있습니다.

  • 소켓을 읽을 수 있는 경우

  • 5초 제한 시간이 만료되는 경우

<?php
$base = event_base_new();
$event = event_new();

event_set($event,STDIN,EV_READ | EV_PERSIST,&#39;print_line&#39;,[$event,$base]);

event_base_set($event,$base);
event_add($event,5000000);
event_base_loop($base);

function print_line($fd, $events, $arg)
{
    // 5秒超时会自动输出1,每次执行了read后,超时会被重置
    echo 1;
    static $max_requests = 0;
    $max_requests++;
    if ($max_requests == 10) {
        // $arg[1] = $base
        event_base_loopexit($arg[1]);
    }
    // 打印输出
    echo  fgets($fd);
}

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.