FUNKCJE

Wszystko, co robił cały stos, robi jeden proces

Model wykonania, dostarczanie przez HTTP, stan współdzielony, obserwowalność i bezpieczeństwo — wbudowane, włączone domyślnie lub oddalone o jedną zmienną środowiskową. Żadnych konfiguracji nginx, żadnych sidecarów, żadnych pluginów do skompilowania.

Run PHP

Model wykonania

Trwałe workery, kooperatywne Fibery i prawdziwe wątki w tle — cykl życia żądania kształtujesz według własnych potrzeb.

Trwałe procesy PHP uruchamiają się raz i obsługują tysiące żądań. Superglobalne, bufory i nagłówki są miękko resetowane między żądaniami; autoloadery, kontenery i połączenia z bazą danych są zachowywane.

Każdy worker obsługuje setki współbieżnych żądań dzięki Fiberom z PHP 8.4 — uśpienia i oczekiwania oddają Fiber zamiast blokować wątek.

Wysyłaj domknięcia do dedykowanej puli wątków i oczekuj na wyniki — z kombinatorami all, race i any do równoległego rozgałęziania.

Wyślij odpowiedź do klienta natychmiast, a potem kontynuuj przetwarzanie w tle — kolejkuj zadania, zapisuj logi, rozgrzewaj pamięci podręczne.

Przechwytuj wywołania funkcji i metod za pomocą atrybutów PHP 8 — ponawiaj, buforuj, śledź lub zabezpieczaj bez ingerencji w miejsca wywołań.

Server-Sent Events w czasie rzeczywistym prosto z PHP, z jawną kontrolą opróżniania bufora — bez niespodzianek z buforowaniem po stronie proxy.

Serve

HTTP i dostarczanie

Warstwa serwera WWW, którą kiedyś zarządzał nginx — routing, pliki statyczne, TLS, kompresja i ochrona — konfigurowana za pomocą zmiennych środowiskowych.

Tradycyjne mapowanie plików, front-controller frameworka lub fallback SPA — przełącza je jedna zmienna; tryb worker nakłada się na dowolny z nich.

Pamięć podręczna treści w pamięci RAM, automatyczne wykrywanie typu MIME, nagłówki ETag i Last-Modified, strumieniowanie dużych plików.

Odpowiedzi tekstowe kompresowane od razu, bez konfiguracji — jakość regulowana w zakresie 0–11, liczba zaoszczędzonych bajtów udostępniana jako metryka.

Terminacja TLS za pomocą dwóch zmiennych — certyfikat i klucz PEM, minimalna wersja protokołu wymuszana przy starcie.

Limity na adres IP z konfigurowalnymi oknami. Żądania przekraczające limit otrzymują kod 429; pełna kolejka PHP odpowiada przeciwciśnieniem 529.

Limit czasu odczytu nagłówków chroniący przed atakiem Slowloris, limity czasu żądań oraz okno łagodnego opróżniania połączeń przy zamykaniu.

Twój własny kod HTML dla każdego kodu statusu — umieść 404.html lub 503.html w katalogu i wskaż go jedną zmienną.

SIGTERM opróżnia trwające połączenia przed zakończeniem — kroczące wdrożenia bez porzuconych żądań.

Coordinate

Stan współdzielony

Współbieżne prymitywy obejmujące cały proces, dzięki którym workery koordynują się bez Redisa czy APCu — operacje w obrębie procesu kosztują mikrosekundy, a nie rundy komunikacji sieciowej.

Counter

15

Atomowy akumulator int64 — get, set, add, compareAndSet.

Atomic

16

Int64 z jawną kontrolą porządkowania pamięci.

Flag

17

Atomowa wartość logiczna do przejść jednorazowych.

Once

18

Kontener wykonywany jednokrotnie z fabryką odporną na ponowne wejście.

Mutex

19

Mutex z mechanizmem zatruwania chroniący przechowywaną wartość, z wykrywaniem zakleszczeń.

Channel

20

Ograniczona kolejka MPMC świadoma Fiberów, działająca między workerami.

Map

21

Współbieżny magazyn z kluczami tekstowymi i dostępem wsadowym.

Pool

22

Ograniczona pula obiektów z powinowactwem do wątku.

Observe

Obserwowalność

Metryki, logi, ślady i profile są wbudowane w serwer — bez eksporterów, bez sidecarów, bez zmian w kodzie.

Dedykowany port wewnętrzny udostępnia metryki żądań, workerów, kolejek, pamięci podręcznej i operacji asynchronicznych — gotowe dla Grafany.

Logi dostępu w formacie JSON z metodą, ścieżką, statusem, czasem trwania i ID żądania w każdej linii — Loki i Elasticsearch parsują je bez zmian.

X-Request-ID generowany lub przekazywany automatycznie, dostępny w PHP i umieszczany w każdej linii logu.

W3C Trace Context, eksport OpenTelemetry, automatyczna instrumentacja PDO, cURL i Redis oraz SDK do śledzenia dla PHP.

Profile dla każdego żądania w formatach xhprof, speedscope, pprof i FlameGraph — wyzwalane przez nagłówek, cookie lub próbkowanie.

Endpointy liveness i readiness oraz migawka bieżącej konfiguracji — sondy Kubernetesa działają od razu, bez konfiguracji.

Protect

Bezpieczeństwo

Rozsądne zabezpieczenia włączone domyślnie oraz listy blokowania na ostre krawędzie starszych aplikacji PHP.

Ukryte pliki i katalogi — .env, .git/, .htaccess — nigdy nie są serwowane. Włączone domyślnie, bez konfiguracji.

Rzeczywisty adres IP klienta z nagłówków Forwarded (RFC 7239) i X-Forwarded-*, z zaufaniem opartym na CIDR i rozstrzyganiem na podstawie skrajnie prawego niezaufanego adresu.

Blokuj wykonywanie plików .php w ścieżkach zapisywalnych, takich jak /uploads/** — ataki polegające na wgraniu shella w starszych aplikacjach kończą się, zanim dojdzie do operacji dyskowych.

Ucieczki przez dowiązania symboliczne poza katalog główny dokumentów są blokowane, chyba że zostaną jawnie dodane do listy dozwolonych — Laravel storage:link nadal działa.

Dwie linijki w Dockerfile

Skopiuj swoją aplikację do obrazu i uruchom ją.