Event
PHP Manual

Construction d'un événement de type signal

Un événement peut aussi surveiller les signaux de style POSIX. Pour construire un gestionnaire pour un signal, utilisez la méthode Event::__construct() avec le drapeau Event::SIGNAL ou la méthode factorielle Event::signal().

Exemple #1 Gestion d'un signal SIGTERM

<?php
/*
Lancez cet exemple dans un terminal :

$ php examples/signal.php

Dans un autre terminal, trouvez le pid, et lancez le signal SIGTERM, i.e.:

$ 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

Dans le premier terminal, vous devriez attraper ceci :

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

    public function 
__construct($base) {
        
$this->base $base;
        
$this->ev Event::signal($baseSIGTERM, 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();
?>

Notez que les fonctions de rappel d'un signal sont exécutées dans la boucle d'événement après que le signal ne soit survenu, aussi, il est plus sécurité pour le signal d'appeler des fonctions depuis la boucle que vous n'êtez pas supposé d'appeler depuis un gestionnaire de signaux POSIX classique.

Voir aussi la »  programmation réseau facile, protable et non bloquante avec Libevent ; Construction d'un événement de type signal.


Event
PHP Manual