Эксплуатация и обновление
Перед запуском
- Проверьте PHP CLI,
ext-json, права и нужные optional extensions. - Для Unix multiprocess убедитесь в наличии
pcntlиposix. - Выполните
php server.php capabilities --jsonи зафиксируйте фактически выбранный backend. - Назначьте bind address, число workers и лимиты соединений, размеров пакетов, idle/frame/TLS handshake timeout.
- Настройте каталог логов и session storage с правами только нужного пользователя процесса.
- Ограничьте доступ к listener-у firewall/edge proxy; не выставляйте raw TCP listener в публичную сеть без модели доступа.
Shutdown и supervisor
В Docker, systemd и Kubernetes отправляйте SIGTERM master-процессу и выделите достаточное время на graceful drain. SIGINT — быстрый stop. Проверьте фактический entry file, PID и stop timeout в целевом окружении; не считайте успешный запуск контейнера доказательством того, что приложение корректно дренирует соединения.
Базовый systemd unit должен запускать конкретный PHP CLI entry file от отдельного пользователя и передавать сигналы master-у. Права на исходники и секреты разделяйте: workers не должны иметь возможность менять код приложения.
Обновление кода
reloadзаменяет worker-ы из загруженного master image; изменённый bootstrap может остаться старым.upgradeперечитывает bootstrap через Unixpcntl_exec()при поддерживаемой передаче listener descriptors и сохраняет master PID.- Изменение listener topology выполняйте через
restart -g.
После операции проверьте status --json, generation, worker PID-ы и фактический HTTP/TCP ответ. Интеграционные сценарии репозитория показывают конкретно протестированные transitions, но не заменяют acceptance check приложения.
Наблюдаемость
Используйте status --json и connections --json для текущего состояния процесса. Встроенная статистика worker-а не является распределённой метрикой: при нескольких процессах и узлах агрегируйте её отдельно. Собирайте логи, restart/crash события, число активных соединений, ошибки и задержки на уровне приложения или edge.
Порядок сетевых портов, firewall, log rotation, file descriptor limits, health checks и deployment rollout зависит от окружения. Сначала измеряйте ограничения целевого хоста; универсальных production-цифр проект не публикует.

