FUNKCJE

Wszystko, co robił cały stos, robi jeden plik binarny

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.

Tryb worker

01

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.

Multipleksowanie Fiberów

02

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.

Asynchroniczne promisy

03

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.

Wczesna odpowiedź

04

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

Dekoratory

05

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

Streaming SSE

06

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.

Trzy tryby routingu

07

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

Pliki statyczne

08

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

Kompresja Brotli

09

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

Wbudowany TLS

10

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

Ograniczanie liczby żądań

11

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

Limity czasu

12

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

Własne strony błędów

13

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

Łagodne zamknięcie

14

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.

Metryki Prometheus

23

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

Logowanie strukturalne

24

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.

ID żądań

25

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

Śledzenie i APM

26

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

Wbudowany profiler

27

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

Kontrole stanu

28

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.

Blokowanie ścieżek z kropką

29

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

Zaufane proxy

30

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.

Lista blokowania wykonywania PHP

31

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.

Dozwolone ścieżki dowiązań symbolicznych

32

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ą.