(PECL event >= 1.2.6-beta)
Event::add — Makes event pending
$timeout
= ?): boolMarks 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.
Returns true
on success or false
on failure.
Example #1 Adding a custom signal
<?php/*Launch it in a terminal window:$ php examples/signal.phpIn another terminal window find out the pid and send SIGTERM, e.g.:$ ps aux | grep exampruslan 3976 0.2 0.0 139896 11256 pts/1 S+ 10:25 0:00 php examples/signal.phpruslan 3978 0.0 0.0 9572 864 pts/2 S+ 10:26 0:00 grep --color=auto examp$ kill -TERM 3976At 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();?>
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