Конструирање настани за сигнали
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Конструирање настани за сигнали
Референца за `event.constructing.signal.events.php` со подобрена типографија и навигација.
Конструирање настани за сигнали
Настанот може да следи и POSIX-стил сигнали. За да конструирате ракувач за сигнал, користете
до било кој од
конструктор со
Event::SIGNAL
знаме, или
очекува callback да одговара на следниот прототип:
метод на фабрика.
Пример #1 Ракување 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, Конструирање настани за сигнали.