PHP sem servidor: mito ou realidade?
\n\nQuando se ouve a expressão "Funções Serverless", a primeira associação geralmente é Node.js ou Python. O PHP parece um monólito que vive no eterno Apache ou Nginx. Mas os tempos estão mudando. Hoje, PHP em arquitetura serverless não é exótico, mas sim uma ferramenta de trabalho para milhares de projetos. Você pode escrever microsserviços, processar webhooks, redimensionar imagens e até executar APIs completas, sem se preocupar com servidores, escalabilidade e pagamento por recursos ociosos.
\n\nNeste artigo, vamos explorar como funciona o PHP no AWS Lambda, quais são as alternativas (Bref, OpenFaaS, Vercel) e, principalmente, escrever código real que pode ser executado imediatamente. Se você é desenvolvedor PHP e quer dar um passo em direção ao desenvolvimento moderno em nuvem, está no lugar certo.
\n\nO que é Serverless e por que um desenvolvedor PHP precisa disso?
\n\nServerless (ou FaaS — Functions as a Service) é um modelo onde você envia seu código, e o provedor decide quando e como executá-lo. Você paga apenas pelo tempo real de execução. Sem máquinas virtuais, sem "Apache" consumindo memória 24/7. Para o PHP, que por muito tempo foi considerado "a linguagem para hospedagem com FTP", isso é um sopro de ar fresco.
\n\nVantagens para projetos PHP:
\n- \n
- Economia — não é necessário manter um servidor inteiro para um único script. \n
- Autoescalabilidade — o Lambda cria cópias da função automaticamente quando a carga aumenta. \n
- Simplicidade de implantação — envie o código e ele funciona. \n
- Abordagem de microsserviços — é possível dividir um monólito em funções menores. \n
Problema: PHP nativamente não sabe ser Serverless
\n\nO PHP clássico não é um daemon. Ele é iniciado, executa o script e morre. Para o Lambda, isso é um problema: a função precisa ser "fria" e iniciar em milissegundos. O PHP normal inicia lentamente (carregamento do framework, autoload, configurações). A solução é o Bref.
\n\nBref — a principal ferramenta para Serverless PHP
\n\nBref é um SDK e runtime open-source que transforma o PHP em uma função Lambda nativa. Ele compila o PHP em um binário estático (através de bref/bref), proporcionando uma inicialização a frio instantânea. O Bref suporta Laravel, Symfony, Slim e qualquer código personalizado.
Como o Bref funciona?
\nVocê escreve uma classe PHP comum, implementa a interface Bref\\Context\\Context, e o Bref cuida do processamento HTTP. Para uma API, basta uma função.
Exemplo: API Serverless em PHP para gerar QR Codes
\nSuponha que precisamos receber uma requisição POST com um texto e retornar um QR Code no formato PNG. Escrevemos a função:
\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\nImplantação no AWS Lambda via Bref
\nInstale o Bref CLI e execute:
\ncomposer require bref/bref\n./vendor/bin/bref init\n./vendor/bin/bref deploy\nPronto. Em um minuto, você terá um endpoint HTTPS,