(PECL event >= 1.2.6-beta)
Event::add — Makes event pending
Marks event pending. Non-pending event will never occur, and the event callback will never be called. In conjunction with Event::del() an event could be re-scheduled by user at any time.
If Event::add() is called on an already pending event, libevent will leave it pending and re-schedule it with the given timeout(if specified). If in this case timeout is not specified, Event::add() has no effect.
timeout
Timeout in seconds.
Example #1 Adding a custom signal
<?php
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();
?>
The above example will output something similar to:
Caught signal 15
Example #2 Adding a timer
<?php
$base = new EventBase();
$n = 2;
$e = Event::timer($base, function($n) use (&$e) {
echo "$n seconds elapsed\n";
$e->delTimer();
}, $n);
$e->add($n);
$base->loop();
?>
The above example will output something similar to:
2 seconds elapsed