Event::add

(PECL event >= 1.2.6-beta)

Event::addПеревести событие в состояние ожидания

Описание

public Event::add( float $timeout = ?): bool

Переводит событие в состояние ожидания. Не ожидающие события никогда не сработают и не вызовут callback-функцию. В сочетании с Event::del(), событие может быть перезапланированно пользователем в любое время.

Если метод Event::add() вызван для уже ожидающего события, libevent оставит его в состоянии ожидания и перезапланирует его в соответствии с заданным временем ожидания (если оно задано). Если время ожидания не задано, то Event::add() не возымеет какого-либо эффекта.

Список параметров

timeout

Время ожидания в секундах.

Возвращаемые значения

Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

Примеры

Пример #1 Добавление пользовательского сигнала

<?php
/*
Запустите в окне терминала:

$ php examples/signal.php

В другом окне терминала узнайте pid и отправьте SIGTERM, например:

$ 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
$ kill -TERM 3976

В первом окне терминала вы должны увидеть следующее:
Пойманный сигнал 15
*/
class MyEventSignal {
    private 
$base$ev;
    public function 
__construct($base) {
        
$this->base $base;
        
$this->ev Event::signal($baseSIGTERM, array($this'eventSighandler'));
        
$this->ev->add();
    }
    public function 
eventSighandler($no$c) {
        echo 
"Пойманный сигнал $no\n";
        
$this->base->exit();
    }
}
$base = new EventBase();
$c    = new MyEventSignal($base);
$base->loop();
?>

Результатом выполнения данного примера будет что-то подобное:

Пойманный сигнал 15

Пример #2 Добавление таймера

<?php
$base 
= new EventBase();
$n 2;
$e Event::timer($base, function($n) use (&$e) {
    echo 
"Прошло секунд: $n\n";
    
$e->delTimer();
}, 
$n);
$e->add($n);
$base->loop();
?>

Результатом выполнения данного примера будет что-то подобное:

Прошло секунд: 2

Смотрите также

  • Event::add()
  • Event::del() - Перевести событие в пассивное состояние
  • Event::signal() - Создать объект события сигнала
  • Event::timer() - Создать объект события таймера
add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top