Рубрики
Uncategorized

Применение таймера свула

Автор оригинала: David Wong.

Привет, свул

Высокопроизводительный сетевой коммуникационный движок PHP, написанный на языке C/C++, предоставляет сетевые серверные и клиентские модули различных протоколов связи.

Swool может применяться в Интернете, мобильной связи, корпоративном программном обеспечении, онлайн-играх, Интернете вещей, интернете транспортных средств, интеллектуальном доме и других областях.

Прежде чем изучать swool, лучше понять базовые знания, такие как поток/процесс, ввод-вывод, протокол TCP/IP и т.д.

Рекомендуется прочитать книгу “Высокопроизводительное серверное программирование Linux”. У меня есть PDF-версия этой книги, мне нужно обратить внимание на общедоступный номер и ответить на “Высокопроизводительное серверное программирование Linux”.

В этой статье в основном используется таймер с точностью до миллисекунды.

Локальная версия: PHP 7.2.6, swool 4.3.1.

Таймер

Существует три основных метода:

Контроллер часов для всего? Таймер? Интервал между тиками

Выполнить по истечении указанного времени

Свул? Таймер? Четкий

Пример кода:

//Trigger every 3000ms
$timer_id = swoole_timer_tick(3000, function () {
    echo "tick 3000ms - ".date('Y-m-d H:i:s')."\n";
});

//Delete timer after 9000ms
swoole_timer_after(9000, function () use ($timer_id) {
    echo "after 9000ms - ".date('Y-m-d H:i:s')."\n";
    swoole_timer_clear($timer_id);
});

Результат операции:

tick 3000ms - 2019-04-07 21:36:56
tick 3000ms - 2019-04-07 21:36:59
tick 3000ms - 2019-04-07 21:37:02
after 9000ms - 2019-04-07 21:37:02

Сценарий применения

1. Например, запускайте бизнес-сценарий рано утром каждый день. Скрипт включает в себя интерфейс, запрашивающий другие деловые стороны или третьих лиц. Если время ожидания интерфейса не отвечает или данные не возвращаются, необходимо повторить попытку.

Механизм повторных попыток таков: отправляйте еще один запрос каждые 5 минут, повторите попытку не более 5 раз, успешно остановите задачу в течение 5 раз и остановите задачу, если 5 раз не удастся.

Пример кода:

$api_url ='xxx '; // interface address
$exec_num = 0; // execution times
swoole_timer_tick(5*60*1000, function($timer_id) use ($api_url, &$exec_num) {
    $exec_num ++ ;
    $result = $this->requestUrl($api_url);
    Echo date ('y-m-d H: I: s'). "Executing task... (". $exec_num. ") \ n";
    if ($result) {
        //Business code
        Swoole? Timer? Clear ($timer? ID); // stop timer
        Echo date ('y-m-d H: I: s'). "The (". $exec [num. ") request interface task executed successfully \ n";
    } else {
        if ($exec_num >= 5) {
            Swoole? Timer? Clear ($timer? ID); // stop timer
            Echo date ('y-m-d H: I: s'). "Request interface failed, failed 5 times, stop execution \ n";
        } else {
            Echo date ('y-m-d H: I: s'). "Interface request failed, try again 5 minutes later \ n";
        }
    }
});

Результат операции:

2019-04-07 21:40:48 in the course of performing the task... (1)
2019-04-07 21:40:48 interface request failed, try again after 5 minutes
2019-04-07 21:45:48 in the course of performing the task... (2)
2019-04-07 21:45:48 interface request failed, try again after 5 minutes
2019-04-07 21:50:48 in the execution of the task... (3)
2019-04-07 21:50:48 interface request failed, try again after 5 minutes
2019-04-07 21:55:48 in the course of performing the task... (4)
2019-04-07 21:55:48 interface request failed, try again after 5 minutes
April 7, 2019 22:00:48 in the course of performing the task... (5)
2019-04-07 22:00:48 interface request failed, 5 times failed, execution stopped

2. Например, разработайте систему, использующую веб-интерфейс для управления временными задачами.

Linux crontab имеет минимальную детализацию по времени в минутах.

PHP swool имеет минимальную временную детализацию в миллисекундах.

0   1   2   3   4   5
|   |   |   |   |   |
|   |   |   |   |   +------ day of week (0 - 6) (Sunday=0)
|   |   |   |   +------ month (1 - 12)
|   |   |   +-------- day of month (1 - 31)
|   |   +---------- hour (0 - 23)
|   +------------ min (0 - 59)
+-------------- sec (0-59)

Управление веб-интерфейсом

  • Управление логином и полномочиями
  • Управление задачами (добавление, удаление, изменение и проверка)
  • Управление машиной сценариев (IP – адрес машины)
  • Журнал задач

Схема архитектуры

Адрес проекта

Адрес проекта

В-третьих, например, мониторинг состояния сервера.

Справочный документ

  • Справочный документ

Рекомендуемое чтение

  • Системное объяснение Единый вход единого входа
  • Системное объяснение – Защита веб-безопасности PHP
  • Системное объяснение – Технология кэширования PHP
  • Системное объяснение – Проверка подписи интерфейса PHP
  • Системное объяснение – Высокоточная работа PHP с плавающей запятой

Эту статью добро пожаловать переслать, переслать пожалуйста, укажите автора и источник, спасибо!