Постійні воркери PHP ініціалізуються один раз і обробляють тисячі запитів. Суперглобальні змінні, буфери й заголовки мʼяко скидаються між запитами; автозавантажувачі, контейнери та зʼєднання з БД зберігаються.
Усе, що робив стек, тепер робить один процес
Модель виконання, доставка через HTTP, спільний стан, спостережуваність і безпека — вбудовані, увімкнені за замовчуванням або доступні через одну змінну оточення. Жодних конфігурацій nginx, жодних сайдкарів, жодних плагінів, які треба компілювати.
Модель виконання
Постійні воркери, кооперативні файбери та справжні фонові потоки — життєвий цикл запиту ви формуєте самі.
Кожен воркер обробляє сотні одночасних запитів через PHP Fibers — sleep і await призупиняють файбер, а не блокують потік, а з хуками середовища виконання так само поводяться й нативний sleep(), читання із сокетів, встановлення зʼєднань та очікування TLS.
Передавайте замикання у виділений пул потоків і очікуйте результатів — з комбінаторами all, race та any для паралельного розгалуження.
Надсилайте відповідь клієнтові негайно, а потім продовжуйте обробку у фоні — ставте завдання в чергу, пишіть логи, прогрівайте кеші.
Декоратори
05Перехоплюйте виклики функцій і методів за допомогою атрибутів PHP 8 — повторні спроби, кешування, трасування чи захист без змін у місцях виклику.
Server-Sent Events у реальному часі прямо з PHP з явним керуванням скиданням буфера — без несподіванок від буферизації на проксі.
HTTP і доставка
Рівень вебсервера, який раніше належав nginx, — маршрутизація, статичні файли, TLS, стиснення та захист — налаштовується змінними оточення.
Традиційне зіставлення файлів, front-controller фреймворку або SPA-фолбек — перемикається однією змінною; режим воркерів працює поверх будь-якого з них.
Кеш вмісту в памʼяті, автоматичне визначення MIME, заголовки ETag і Last-Modified, потокова передача великих файлів.
Стиснення
09Zstandard, Brotli і gzip з коробки, узгоджуються для кожного клієнта за q-значенням, з окремим рівнем для кожного кодека — кешовані статичні файли отримують попередньо стиснену копію Brotli.
Термінація TLS двома змінними — PEM-сертифікат і ключ, мінімальна версія протоколу перевіряється під час запуску.
Ліміти для кожної IP-адреси з налаштовуваними вікнами. Запити понад ліміт отримують 429; заповнена черга PHP відповідає 529 — зворотний тиск (backpressure).
Тайм-аути
12Тайм-аут читання заголовків проти Slowloris, тайм-аути запитів і вікно плавного завершення зʼєднань під час зупинки.
Ваш власний HTML для кожного коду статусу — покладіть 404.html або 503.html у каталог і вкажіть на нього однією змінною.
SIGTERM дочікується завершення активних зʼєднань перед виходом — поступові розгортання без втрачених запитів.
Спостережуваність
Метрики, логи, трейси та профілі вбудовані в сервер — жодних експортерів, жодних сайдкарів, жодних змін у коді.
Окремий внутрішній порт віддає метрики запитів, воркерів, черги, кешу та асинхронних операцій — готово для Grafana.
JSON-логи доступу з методом, шляхом, статусом, тривалістю та ідентифікатором запиту в кожному рядку — Loki та Elasticsearch розбирають їх як є.
X-Request-ID генерується або передається автоматично, доступний у PHP і проставляється в кожному рядку логу.
W3C Trace Context, експорт OpenTelemetry, автоінструментування PDO, cURL і Redis, а також SDK трасування для PHP.
Профілі кожного запиту у форматах xhprof, speedscope, pprof і FlameGraph — запускаються за заголовком, cookie або вибірково.
Ендпоінти liveness і readiness, а також живий знімок конфігурації — проби Kubernetes працюють з коробки.
Безпека
Розумні засоби захисту увімкнені за замовчуванням, а також списки заборон для гострих кутів застарілих PHP-застосунків.
Приховані файли й каталоги — .env, .git/, .htaccess — ніколи не віддаються. Увімкнено за замовчуванням, без налаштувань.
Справжня IP-адреса клієнта із заголовків Forwarded (RFC 7239), X-Forwarded-* і, за Cloudflare, CF-Connecting-IP — довіра задається через CIDR і ключові слова на кшталт private і cloudflare, адреса визначається за правилом «крайня права недовірена».
Блокуйте виконання .php у доступних для запису шляхах на кшталт /uploads/** — атаки через завантажені шели на застарілі застосунки зупиняються ще до звернення до диска.
Вихід символьних посилань за межі кореня документів блокується, якщо його явно не дозволено — Laravel storage:link і далі працює.
Файл .oxphpdeny у стилі .gitignore не дає віддавати vendor/, SQL-дампи й резервні копії — однаково для статичних файлів і PHP, у кожному режимі маршрутизації, з перевіркою до будь-якого звернення до диска.
Два рядки в Dockerfile
Скопіюйте свій застосунок в образ і запустіть його.