EvTimer::__construct
(PECL ev >= 0.2.0)
EvTimer::__construct — Конструктор объекта наблюдателя EvTimer
Описание
$after
,
float
$repeat
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
)Конструктор объекта наблюдателя EvTimer.
Список параметров
-
after
-
Настраивает таймер для запуска через
after
секунд. -
repeat
-
Если время повтора равно
0.0
, то он будет автоматически остановлен после истечения времени ожидания. Если положительное, таймер будет автоматически настроен на повторный запуск каждые повторяющиеся секунды, пока не будет остановлен вручную. -
callback
-
Смотрите Наблюдатели callback-функций .
-
data
-
Пользовательские данные, связанные с наблюдателем.
-
priority
Возвращаемые значения
Возвращает объект EvTimer в случае успешного выполнения.
Примеры
Пример #1 Простые таймеры
<?php
// Создает и запускает таймер через 2 секунды
$w1 = new EvTimer(2, 0, function () {
echo "2 секунды прошло\n";
});
// Создает и запускает таймер через 2 секунды, повторяя каждую секунду
// пока мы не остановим его вручную
$w2 = new EvTimer(2, 1, function ($w) {
echo "вызывается каждую секунду, запускается через 2 секунды\n";
echo "итерация = ", Ev::iteration(), PHP_EOL;
// Останавливаем наблюдателя после 5 итераций
Ev::iteration() == 5 and $w->stop();
// Останавливаем наблюдателя, если дальнейшие вызовы вызовут более 10 итераций
Ev::iteration() >= 10 and $w->stop();
});
// Создаем остановленный таймер. Он будет неактивным, пока мы не запустим его сами
$w_stopped = EvTimer::createStopped(10, 5, function($w) {
echo "Callback-функция таймера, созданного как остановленный\n";
// Останавливаем наблюдателя после 2 итераций
Ev::iteration() >= 2 and $w->stop();
});
// Цикл до вызова Ev::stop() или остановки всех наблюдателей
Ev::run();
// Запускаем и смотрим, работает ли он
$w_stopped->start();
echo "Запустили одну итерацию\n";
Ev::run(Ev::RUN_ONCE);
echo "Перезапустили второй наблюдатель и пробуем обработать те же события, но не блокируем\n";
$w2->again();
Ev::run(Ev::RUN_NOWAIT);
$w = new EvTimer(10, 0, function() {});
echo "Запуск заблокированного цикла\n";
Ev::run();
echo "END\n";
?>
Результатом выполнения данного примера будет что-то подобное:
2 секунды прошло вызывается каждую секунду, запускается через 2 секунды итерация = 1 вызывается каждую секунду, запускается через 2 секунды итерация = 2 вызывается каждую секунду, запускается через 2 секунды итерация = 3 вызывается каждую секунду, запускается через 2 секунды итерация = 4 вызывается каждую секунду, запускается через 2 секунды итерация = 5 Запустили одну итерацию Callback-функция таймера, созданного как остановленный Перезапустили второй наблюдатель и пробуем обработать те же события, но не блокируем Запуск заблокированного цикла вызывается каждую секунду, запускается через 2 секунды итерация = 8 вызывается каждую секунду, запускается через 2 секунды итерация = 9 итерация каждую секунду, запускается через 2 секунды итерация = 10 END
Смотрите также
- EvTimer::createStopped() - Создает остановленный наблюдатель EvTimer
- EvPeriodic
- » ev_timer - относительные и необязательно повторяющиеся таймауты
- » Будьте осторожны с таймаутами