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
기타
- Event::add()
- Event::del() - 이벤트를 보류 중이 아닌 상태로 만듭니다.
- Event::signal() - 신호 이벤트 객체를 구성합니다.
- Event::timer() - 타이머 이벤트 객체 생성