Event Event::add

(PECL event >= 1.2.6-beta)

Event::add — 이벤트를 보류 상태로 만듭니다.


설명

public Event::add(float $timeout = ?): bool

이벤트를 보류 중으로 표시합니다. 보류 중인 이벤트가 발생하지 않으며 이벤트 콜백이 호출되지 않습니다. Event::del()과 함께 이벤트는 사용자가 언제든지 다시 예약할 수 있습니다.

Event::add()가 이미 보류 중인 이벤트에서 호출되면 libevent는 이를 보류 중인 상태로 두고 지정된 시간 초과(지정된 경우)로 다시 예약합니다. 이 경우 시간 초과가 지정되지 않으면 Event::add()가 적용되지 않습니다.


매개변수

timeout
시간 초과(초)입니다.

반환 값

성공하면 true를, 실패하면 false를 반환합니다.


Examples

예제 #1 사용자 지정 신호 추가

                  
<?php
/*
Launch it in a terminal window:

$ php examples/signal.php

In another terminal window find out the pid and send SIGTERM, e.g.:

$ ps aux | grep examp
ruslan    3976  0.2  0.0 139896 11256 pts/1    S+   10:25   0:00 php examples/signal.php
ruslan    3978  0.0  0.0   9572   864 pts/2    S+   10:26   0:00 grep --color=auto examp
$ kill -TERM 3976

At the first terminal window you should catch the following:

Caught signal 15
*/
class MyEventSignal {
    private $base, $ev;

    public function __construct($base) {
        $this->base = $base;
        $this->ev = Event::signal($base, SIGTERM, array($this, 'eventSighandler'));
        $this->ev->add();
    }

    public function eventSighandler($no, $c) {
        echo "Caught signal $no\n";
        $this->base->exit();
    }
}

$base = new EventBase();
$c    = new MyEventSignal($base);

$base->loop();
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

Caught signal 15
                

예제 #2 타이머 추가

                  
<?php
$base = new EventBase();
$n = 2;
$e = Event::timer($base, function($n) use (&$e) {
    echo "$n seconds elapsed\n";
    $e->delTimer();
}, $n);
$e->add($n);
$base->loop();
?>
                  
                

위의 예는 다음과 유사한 결과를 출력합니다.

2 seconds elapsed
                

기타