Construcción de un evento de tipo señal

Un evento puede también supervisar las señales de estilo POSIX. Para construir un gestor para una señal, utilice el método Event::__construct() con el flag Event::SIGNAL o el método factorial Event::signal().

Ejemplo #1 Gestión de una señal SIGTERM

<?php
/*
Ejecute este ejemplo en un terminal:

$ php examples/signal.php

En otro terminal, encuentre el pid y envíe la señal SIGTERM, es decir:

$ 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

En el primer terminal, debería capturar lo siguiente:

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

Tenga en cuenta que las funciones de retrollamada de una señal se ejecutan en el bucle de eventos después de que la señal haya ocurrido, por lo tanto, es más seguro para la señal llamar a funciones desde el bucle que no se supone que se llamen desde un gestor de señales POSIX clásico.

Véase también la »  programación de red fácil, portable y no bloqueante con Libevent; Construcción de un evento de tipo señal.

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top