Принцип работы
Мастер-процесс - это основной процесс, который начинает работу, как только вы запускаете Localzet Server и выполняет всю процедуру запуска. Он не участвует в обработке запросов, а служит лишь для поддержания стабильности, мониторинга и управления дочерними процессами.
- Проверка среды - перед началом работы процесс должен убедиться, что он запущен из терминала и система соответствует минимальным требованиям.
- Демонизация - здесь процесс переходит в фоновый режим (daemon).
- Установка сигналов - так процесс, выполняемый в Unix-подобной системе, сообщает самой ОС о том, какие сигналы POSIX может принимать и устанавливает обработчики.
- Создание сокета - на этом этапе процесс создаёт слушающий сокет с параметрами, которые вы передали серверу (
$socketName
и$socketContext
). - Создание форков - т.к. сам мастер-процесс не принимает соединения, этим занимаются дочерние процессы (форки).
- Мониторинг сигналов - последним этапом запуска является переход в режим мониторинга и обработки входящих POSIX-сигналов для управления форками.
Рабочие процессы - это дочерние процессы, которые обрабатывают входящие соединения и выполняют основную логику вашего приложения. Каждый такой процесс работает независимо и может обслуживать сотни тысяч входящих соединений.
- Epoll слушает события - при новом входящем событии Epoll решает, какому сокету его передать.
- Логическая обработка - после получения запроса процесс передаёт его обработчикам протоколов транспортного и прикладного уровней, а после - вашему обработчику.
- Возврат ответа - после выполнения основной логики приложения, клиенту возвращается ответ, посредством ранее определённых протоколов.
- Обратная связь - в конечном итоге процесс возвращается к исходному состоянию для принятия новых соединений.
Сигналы POSIX - это асинхронное уведомление процесса о каком-либо событии, один из основных способов взаимодействия между процессами в Unix-подобных системах. По умолчанию, при получении сигнала, операционная система прерывает выполнение процесса, если процессом не задан обработчик соответствующего сигнала.
В Localzet Server предустановлены обработчики сигналов SIGINT
, SIGTERM
, SIGHUP
, SIGTSTP
, SIGQUIT
,
SIGUSR1
, SIGUSR2
, SIGIOT
и SIGIO
. На схеме наглядно показаны сигналы и действия, к которым они приведут
при взаимодействии с процессом сервера.
SIGQUIT
и SIGUSR2
отвечают за, так называемую, "плавную" остановку и перезагрузку. Плавность здесь - это
процесс закрытия всех соединений перед остановкой или перезагрузкой сервера. Так сервер сообщит клиентам, что
выключается, а не грубо оборвёт соединения.