(PECL event >= 1.2.6-beta)
Event::add — Pone un evento en espera
Pone un evento en espera. Un evento que no tiene el estado en espera nunca se lanzará, y la retrollamada del evento nunca se llamará. Utilizando Event::del() un evento puede ser reprogramado por el usuario cuando lo desee.
Si Event::add() es llamado en un evento ya en espera, libevent lo dejará en espera y lo reprogramará con el nuevo timeout (si se da). En el caso de que el timeout no esté especificado, Event::add() no tiene ningún efecto.
timeout
    Timeout en segundos.
Ejemplo #1 Adición de una señal personalizada
<?php
/*
Ejecute en una ventana de terminal:
$ php examples/signal.php
En otra ventana de terminal, encuentre el pid y envíe SIGTERM, por ejemplo:
$ 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 la primera ventana del terminal, debería ver lo siguiente:
Señal atrapada 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 "Señal atrapada $no\n";
        $this->base->exit();
    }
}
$base = new EventBase();
$c = new MyEventSignal($base);
$base->loop();
?>Resultado del ejemplo anterior es similar a:
Señal atrapada 15
Ejemplo #2 Adición de un temporizador
<?php
$base = new EventBase();
$n = 2;
$e = Event::timer($base, function($n) use (&$e) {
    echo "$n segundos transcurridos\n";
    $e->delTimer();
}, $n);
$e->add($n);
$base->loop();
?>Resultado del ejemplo anterior es similar a:
2 segundos transcurridos
