PHP ohne Server: Mythos oder Realität?
\n\nWenn man den Begriff "Serverless Functions" hört, denkt man zuerst an Node.js oder Python. PHP wirkt wie ein Monolith, der ewig auf Apache oder Nginx lebt. Doch die Zeiten ändern sich. Heute ist PHP in einer Serverless-Architektur keine Exotik mehr, sondern ein Arbeitspferd für tausende Projekte. Sie können Microservices schreiben, Webhooks verarbeiten, Bilder skalieren und sogar vollwertige APIs betreiben – ohne sich um Server, Skalierung oder die Kosten für ungenutzte Ressourcen zu kümmern.
\n\nIn diesem Artikel zeigen wir, wie PHP auf AWS Lambda funktioniert, welche Alternativen es gibt (Bref, OpenFaaS, Vercel) und vor allem: Wir schreiben echten Code, den Sie sofort ausführen können. Wenn Sie PHP-Entwickler sind und einen Schritt in die moderne Cloud-native Entwicklung machen wollen, sind Sie hier genau richtig.
\n\nWas ist Serverless und warum brauchen PHP-Entwickler das?
\n\nServerless (oder FaaS – Functions as a Service) ist ein Modell, bei dem Sie Ihren Code hochladen und der Anbieter selbst entscheidet, wann und wie er ausgeführt wird. Sie zahlen nur für die tatsächliche Ausführungszeit. Keine virtuellen Maschinen, kein "Apache", der 24/7 Speicher frisst. Für PHP, das lange als "Sprache für Hosting mit FTP" galt, ist das ein echter Frischluftstoß.
\n\nVorteile für PHP-Projekte:
\n- \n
- Kostenersparnis – Sie müssen keinen ganzen Server für ein einzelnes Skript vorhalten. \n
- Automatische Skalierung – Lambda erstellt bei steigender Last automatisch Kopien der Funktion. \n
- Einfaches Deployment – Code hochladen, und er läuft. \n
- Microservice-Ansatz – Sie können einen Monolithen in kleine Funktionen aufteilen. \n
Das Problem: PHP kann von Haus aus kein Serverless
\n\nKlassisches PHP ist kein Daemon. Es startet, führt ein Skript aus und stirbt. Für Lambda ist das ein Problem: Die Funktion muss "kalt" sein und in Millisekunden starten. Normales PHP startet langsam (Framework-Ladung, Autoloading, Konfiguration). Die Lösung ist Bref.
\n\nBref – Das wichtigste Tool für Serverless PHP
\n\nBref ist ein Open-Source-SDK und Runtime, das PHP in eine native Lambda-Funktion verwandelt. Es kompiliert PHP zu einem statischen Binary (über bref/bref), was einen sofortigen Kaltstart ermöglicht. Bref unterstützt Laravel, Symfony, Slim und jeden benutzerdefinierten Code.
Wie funktioniert Bref?
\nSie schreiben eine normale PHP-Klasse, implementieren das Interface Bref\\Context\\Context, und Bref übernimmt die HTTP-Verarbeitung. Für eine API reicht eine einzige Funktion.
Beispiel: Serverless API in PHP zur QR-Code-Generierung
\nAngenommen, wir wollen eine POST-Anfrage mit Text empfangen und einen QR-Code im PNG-Format zurückgeben. So schreiben wir die Funktion:
\n\n<?php\n// handler.php\nrequire __DIR__ . '/vendor/autoload.php';\n\nuse Bref\\Context\\Context;\nuse Bref\\Event\\Http\\HttpHandler;\nuse chillerlan\\QRCode\\QRCode;\nuse chillerlan\\QRCode\\QROptions;\n\nclass QrGenerator extends HttpHandler\n{\n public function handleRequest($request, Context $context): array\n {\n $body = json_decode($request->getBody()->getContents(), true);\n $text = $body['text'] ?? 'Hallo, Serverless!';\n \n $options = new QROptions([\n 'outputType' => QRCode::OUTPUT_IMAGE_PNG,\n 'imageBase64' => false,\n ]);\n \n $qrcode = new QRCode($options);\n $imageData = $qrcode->render($text);\n \n return [\n 'headers' => ['Content-Type' => 'image/png'],\n 'statusCode' => 200,\n 'body' => base64_encode($imageData),\n 'isBase64Encoded' => true,\n ];\n }\n}\n\nreturn new QrGenerator();\n\nDeployment auf AWS Lambda mit Bref
\nInstallieren Sie die Bref CLI und führen Sie Folgendes aus:
\ncomposer require bref/bref\n./vendor/bin/bref init\n./vendor/bin/bref deploy\nFertig. In einer Minute haben Sie einen HTTPS-Endpunkt,