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 - относительные и необязательно повторяющиеся таймауты
- » Будьте осторожны с таймаутами