МОЖЛИВОСТІ

Усе, що робив стек, тепер робить один процес

Модель виконання, доставка через HTTP, спільний стан, спостережуваність і безпека — вбудовані, увімкнені за замовчуванням або доступні через одну змінну оточення. Жодних конфігурацій nginx, жодних сайдкарів, жодних плагінів, які треба компілювати.

Run PHP

Модель виконання

Постійні воркери, кооперативні файбери та справжні фонові потоки — життєвий цикл запиту ви формуєте самі.

Постійні воркери PHP ініціалізуються один раз і обробляють тисячі запитів. Суперглобальні змінні, буфери й заголовки мʼяко скидаються між запитами; автозавантажувачі, контейнери та зʼєднання з БД зберігаються.

Кожен воркер обробляє сотні одночасних запитів через PHP Fibers — sleep і await призупиняють файбер, а не блокують потік, а з хуками середовища виконання так само поводяться й нативний sleep(), читання із сокетів, встановлення зʼєднань та очікування TLS.

Передавайте замикання у виділений пул потоків і очікуйте результатів — з комбінаторами all, race та any для паралельного розгалуження.

Надсилайте відповідь клієнтові негайно, а потім продовжуйте обробку у фоні — ставте завдання в чергу, пишіть логи, прогрівайте кеші.

Перехоплюйте виклики функцій і методів за допомогою атрибутів PHP 8 — повторні спроби, кешування, трасування чи захист без змін у місцях виклику.

Server-Sent Events у реальному часі прямо з PHP з явним керуванням скиданням буфера — без несподіванок від буферизації на проксі.

Serve

HTTP і доставка

Рівень вебсервера, який раніше належав nginx, — маршрутизація, статичні файли, TLS, стиснення та захист — налаштовується змінними оточення.

Традиційне зіставлення файлів, front-controller фреймворку або SPA-фолбек — перемикається однією змінною; режим воркерів працює поверх будь-якого з них.

Кеш вмісту в памʼяті, автоматичне визначення MIME, заголовки ETag і Last-Modified, потокова передача великих файлів.

Zstandard, Brotli і gzip з коробки, узгоджуються для кожного клієнта за q-значенням, з окремим рівнем для кожного кодека — кешовані статичні файли отримують попередньо стиснену копію Brotli.

Термінація TLS двома змінними — PEM-сертифікат і ключ, мінімальна версія протоколу перевіряється під час запуску.

Ліміти для кожної IP-адреси з налаштовуваними вікнами. Запити понад ліміт отримують 429; заповнена черга PHP відповідає 529 — зворотний тиск (backpressure).

Тайм-аут читання заголовків проти Slowloris, тайм-аути запитів і вікно плавного завершення зʼєднань під час зупинки.

Ваш власний HTML для кожного коду статусу — покладіть 404.html або 503.html у каталог і вкажіть на нього однією змінною.

SIGTERM дочікується завершення активних зʼєднань перед виходом — поступові розгортання без втрачених запитів.

Coordinate

Спільний стан

Конкурентні примітиви на рівні процесу, щоб воркери координувалися без Redis чи APCu — операції всередині процесу тривають мікросекунди, а не мережеві звернення туди й назад.

Counter

15

Атомарний акумулятор int64 — get, set, add, compareAndSet.

Atomic

16

Int64 з явним керуванням порядком доступу до памʼяті.

Flag

17

Атомарний булевий прапорець для одноразових переходів.

Once

18

Контейнер одноразового виконання з фабрикою, безпечною для повторного входу.

Mutex

19

Мʼютекс з отруєнням над збереженим значенням, з виявленням взаємоблокувань.

Channel

20

Обмежена MPMC-черга між воркерами з підтримкою файберів.

Map

21

Конкурентне сховище з рядковими ключами та пакетним доступом.

Pool

22

Обмежений пул обʼєктів із привʼязкою до потоків.

Observe

Спостережуваність

Метрики, логи, трейси та профілі вбудовані в сервер — жодних експортерів, жодних сайдкарів, жодних змін у коді.

Окремий внутрішній порт віддає метрики запитів, воркерів, черги, кешу та асинхронних операцій — готово для 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 працюють з коробки.

Protect

Безпека

Розумні засоби захисту увімкнені за замовчуванням, а також списки заборон для гострих кутів застарілих PHP-застосунків.

Справжня IP-адреса клієнта із заголовків Forwarded (RFC 7239), X-Forwarded-* і, за Cloudflare, CF-Connecting-IP — довіра задається через CIDR і ключові слова на кшталт private і cloudflare, адреса визначається за правилом «крайня права недовірена».

Блокуйте виконання .php у доступних для запису шляхах на кшталт /uploads/** — атаки через завантажені шели на застарілі застосунки зупиняються ще до звернення до диска.

Файл .oxphpdeny у стилі .gitignore не дає віддавати vendor/, SQL-дампи й резервні копії — однаково для статичних файлів і PHP, у кожному режимі маршрутизації, з перевіркою до будь-якого звернення до диска.

Два рядки в Dockerfile

Скопіюйте свій застосунок в образ і запустіть його.