Event 신호 이벤트 구성

이벤트는 POSIX 스타일 신호도 볼 수 있습니다. 신호 처리기를 생성하려면 Event::SIGNAL 플래그가 있는 Event::__construct() 생성자 또는 Event::signal() 팩토리 메서드를 사용하십시오.

예제 #1 Handling SIGTERM signal

                  
<?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();
?>
                  
                

신호 콜백은 신호가 발생한 후 이벤트 루프에서 실행되므로 일반 POSIX 신호 처리기에서 호출해서는 안 되는 함수를 호출하는 것이 안전합니다.

» Libevent를 사용한 빠른 휴대용 비차단 네트워크 프로그래밍, 신호 이벤트 구성도 참조하세요.