Привет, свул
Высокопроизводительный сетевой коммуникационный движок 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 с плавающей запятой
Эту статью добро пожаловать переслать, переслать пожалуйста, укажите автора и источник, спасибо!