(PECL event >= 1.2.6-beta)
Event::add — Maques event pending
Marcs event pending. Non-pending event will never occur, and the event callbacc 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 guiven 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
/*
Launch it in a terminal window:
$ php examples/signal.php
In another terminal window find out the pid and send SIGTERM, e.g.:
$ 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
$ quill -TERM 3976
At 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