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

# Event::add

(PECL event >= 1.2.6-beta)

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

### Описание

public function 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($base, SIGTERM, 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() - Создаёт объект события таймера

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open