-
Notifications
You must be signed in to change notification settings - Fork 0
Timer Class Documentation
Класс Timer в пространстве имен Php\Threading предоставляет различные методы для работы с таймерами. Этот класс позволяет настраивать таймеры, которые могут запускаться один раз после указанного периода, повторяться через интервалы или срабатывать по условию. Эта документация предоставляет обзор класса, его методов и примеры использования.
Класс Timer предлагает следующие возможности:
- Запуск задачи один раз после указанного периода.
- Запуск задачи повторно через указанные интервалы.
- Срабатывание задачи по условию.
- Изменение времени задержки и периода существующего таймера.
- Остановка, перезапуск и отмена таймеров.
- Приостановка выполнения скрипта на указанный период.
- Отмена всех активных таймеров.
public static function after(string $period, callable $callback): Timer
Выполнить один раз после указанного периода в формате:
- '' - миллисекунды
- 's' - секунды
- 'm' - минуты
- 'h' - часы
- 'd' - дни (24 часа)
- Например, '2h 30m 10s', '2.5s', '2000', или '1m 30s'.
public static function every(string $period, callable $callback): Timer
Выполнять задачу через указанные интервалы, как в методе after.
public static function trigger(callable $trigger, callable $callback, int $checkPeriod = 16): Timer
Создать триггерный таймер, который вызовет callback, когда триггерный callback вернет true.
public static function setTimeout(callable $taskCallback, int $millis): Timer
Запустить задачу один раз после периода задержки в миллисекундах (аналогично JavaScript setTimeout).
public static function setInterval(callable $taskCallback, int $millis): Timer
Запускать задачу повторно через указанные интервалы (аналогично JavaScript setInterval).
public static function sleep(string $period)
Приостановить выполнение на указанный период.
public static function cancelAll()
Отменить все запланированные задачи таймера.
Копировать код
public static function shutdownAll()
Завершить все таймеры и систему таймеров.
public static function parsePeriod(string $value): int
Преобразовать строковый период в количество миллисекунд.
public function cancel()
Отменить задачу таймера.
public function run()
Немедленно запустить задачу таймера.
public function stop()
Остановить задачу таймера.
public function restart()
Перезапустить задачу таймера.
public function change(int $dueTime, int $period)
Изменить время задержки и период таймера.
public bool $isRunning
Возвращает true, если таймер запущен, false если остановлен.
Копировать код
public bool $isDisposed
Возвращает true, если таймер удален.
Пример, демонстрирующий использование класса Timer:
<?php
use Php\Threading\Timer;
// Создание таймера с интервалом в 1 секунду / Create a timer with an interval of 1 second
$intervalTimer = Timer::every('1s', function() {
echo "This task runs every 1 second.\n";
});
// Проверка состояния таймера / Check the timer state
if ($intervalTimer->isRunning) {
echo "The timer is currently running.\n";
} else {
echo "The timer is not running.\n";
}
// Остановка таймера через 5 секунд / Stop the timer after 5 seconds
Timer::setTimeout(function() use ($intervalTimer) {
$intervalTimer->stop();
echo "Timer stopped.\n";
// Проверка состояния таймера после остановки / Check the timer state after stopping
if (!$intervalTimer->isRunning) {
echo "The timer has been stopped.\n";
}
}, 5000);
// Перезапуск таймера через 10 секунд / Restart the timer after 10 seconds
Timer::setTimeout(function() use ($intervalTimer) {
$intervalTimer->restart();
echo "Timer restarted.\n";
// Проверка состояния таймера после перезапуска / Check the timer state after restarting
if ($intervalTimer->isRunning) {
echo "The timer is running again.\n";
}
}, 10000);
// Изменение времени задержки и периода таймера через 15 секунд / Change the timer's due time and period after 15 seconds
Timer::setTimeout(function() use ($intervalTimer) {
$intervalTimer->change(2000, 2000); // Установить задержку и период в 2 секунды / Set delay and period to 2 seconds
echo "Timer interval changed to 2 seconds.\n";
}, 15000);
// Применение sleep для задержки выполнения скрипта / Use sleep to delay script execution
echo "Going to sleep for 3 seconds.\n";
sleep(3);
echo "Woke up after sleeping.\n";
// Отмена конкретного таймера / Cancel the specific timer
$intervalTimer->cancel();
echo "Canceled the interval timer.\n";
// Проверка состояния таймера после отмены / Check the timer state after cancellation
if ($intervalTimer->isDisposed) {
echo "The timer has been disposed.\n";
}
// Отмена всех таймеров / Cancel all timers
Timer::cancelAll();
echo "All timers have been canceled.\n";
Test