array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'event.persistence.php', 1 => 'О постоянных событиях', ), 'up' => array ( 0 => 'book.event.php', 1 => 'Event', ), 'prev' => array ( 0 => 'event.flags.php', 1 => 'Флаги событий', ), 'next' => array ( 0 => 'event.callbacks.php', 1 => 'Callback-функции', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/event/event.persistence.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
По умолчанию, когда ожидающее событие становится активным (поскольку его файловый дескриптор становится доступен для записи или чтения, или истёк период ожидания), у него снимается статус ожидающего ровно перед тем, как будет запущена его функция обратного вызова. Таким образом, чтобы снова перевести событие в статус ожидания, на нём вызывают метод Event::add() из его callback-функции.
Если же на событии установлен флаг
Event::PERSIST
, то событие становится
постоянным.
Это означает, что событие остаётся в статусе ожидания, даже если
запущена его функция обратного вызова.
Чтобы убрать у события флаг постоянства, необходимо
вызвать на нём метод Event::del().
Время ожидания постоянного события сбрасывается каждый раз, когда запускается его
callback-функция. Поэтому, если для события установлены флаги
Event::READ
|
Event::PERSIST
и время ожидания в 5 секунд,
событие станет активно в следующих случаях:
Всякий раз, когда сокет или дескриптор файла готов к чтению.
Всякий раз, когда прошло пять секунд с момента последнего события.
Смотрите также «» Fast Быстрое переносимое неблокирующее сетевое программирование с Libevent, о постоянных событиях»