array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'en', ), 'this' => array ( 0 => 'event.persistence.php', 1 => 'About event persistence', ), 'up' => array ( 0 => 'book.event.php', 1 => 'Event', ), 'prev' => array ( 0 => 'event.flags.php', 1 => 'Event flags', ), 'next' => array ( 0 => 'event.callbacks.php', 1 => 'Event callbacks', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/event/event.persistence.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
By default, whenever a pending event becomes active (because its file descriptor is ready to read or write, or because its timeout expires), it becomes non-pending right before its callback is executed. Thus, to make the event pending again one may call Event::add() on it again from inside the callback function.
If the
Event::PERSIST
flag is set on an event, however, the event is
persistent
. This means that event remains pending even when its callback is activated.
Event::del()
method can be called to make it non-pending.
The timeout on a persistent event resets whenever the event's callback runs.
Thus, if one has an event with flags
Event::READ
|
Event::PERSIST
and a timeout of five seconds, the event will become active:
Whenever the socket or file descriptor is ready for reading.
Whenever five seconds have passed since the event last became active.
See also » Fast portable non-blocking network programming with Libevent, About Event Persistence