PHP sin servidor: ¿mito o realidad?
\n\nCuando se escucha la frase "Funciones Serverless", la primera asociación suele ser Node.js o Python. PHP parece un monolito que vive en un eterno Apache o Nginx. Pero los tiempos cambian. Hoy en día, PHP en arquitectura serverless no es una excentricidad, sino una herramienta de trabajo para miles de proyectos. Puede escribir microservicios, procesar webhooks, redimensionar imágenes e incluso ejecutar APIs completas, sin preocuparse por servidores, escalado o pagar por recursos inactivos.
\n\nEn este artículo, analizaremos cómo funciona PHP en AWS Lambda, qué alternativas existen (Bref, OpenFaaS, Vercel) y, lo más importante, escribiremos código real que se pueda ejecutar de inmediato. Si es desarrollador PHP y quiere dar el salto al desarrollo moderno cloud-native, está en el lugar correcto.
\n\n¿Qué es Serverless y por qué un desarrollador PHP lo necesita?
\n\nServerless (o FaaS — Functions as a Service) es un modelo donde usted sube su código y el proveedor decide cuándo y cómo ejecutarlo. Solo paga por el tiempo de ejecución real. Nada de máquinas virtuales, ni un "Apache" consumiendo memoria 24/7. Para PHP, que durante mucho tiempo fue considerado "el lenguaje del hosting con FTP", esto es un soplo de aire fresco.
\n\nVentajas para proyectos PHP:
\n- \n
- Ahorro — no necesita mantener un servidor completo para un solo script. \n
- Autoescalado — Lambda crea copias de la función automáticamente cuando aumenta la carga. \n
- Simplicidad de despliegue — sube el código y funciona. \n
- Enfoque de microservicios — puede dividir un monolito en funciones pequeñas. \n
El problema: PHP de serie no sabe ser Serverless
\n\nEl PHP clásico no es un demonio. Se inicia, ejecuta el script y termina. Para Lambda esto es un problema: la función debe ser "fría" y arrancar en milisegundos. El PHP normal arranca lentamente (carga del framework, autocarga, configuraciones). La solución es Bref.
\n\nBref — la herramienta principal para Serverless PHP
\n\nBref es un SDK y runtime de código abierto que convierte a PHP en una función Lambda nativa. Compila PHP en un binario estático (a través de bref/bref), lo que proporciona un arranque en frío instantáneo. Bref es compatible con Laravel, Symfony, Slim y cualquier código personalizado.
¿Cómo funciona Bref?
\nEscribe una clase PHP normal, implementa la interfaz Bref\\Context\\Context, y Bref se encarga del manejo HTTP. Para una API, basta con una función.
Ejemplo: API Serverless en PHP para generar códigos QR
\nSupongamos que necesitamos recibir una solicitud POST con texto y devolver un código QR en formato PNG. Escribimos la función:
\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'] ?? 'Hello, 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\nDespliegue en AWS Lambda con Bref
\nInstale Bref CLI y ejecute:
\ncomposer require bref/bref\n./vendor/bin/bref init\n./vendor/bin/bref deploy\nTodo listo. En un minuto tendrá un endpoint HTTPS,