PHP em servidores sem servidor: AWS Lambda para desenvolvedores web

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

PHP e Serverless: uma união que você não esperava

\n\n

Quando ouvimos "Serverless" (ou "computação sem servidor"), a primeira associação é JavaScript, Python ou Go. O PHP nesse contexto parece um "dinossauro" que ficou preso na era das hospedagens compartilhadas e WordPress monolíticos. Mas vamos encarar a verdade: o PHP está vivo, saudável e mais flexível do que você imagina.

\n\n

Hoje vamos analisar como executar código PHP no AWS Lambda e suas alternativas. Você descobrirá por que o serverless PHP não é mágica, mas sim uma ferramenta funcional para APIs, manipuladores de webhooks e microsserviços. Spoiler: você não precisará abandonar sua linguagem favorita.

\n\n

O que é Serverless na prática?

\n\n

Vamos desfazer o mito imediatamente. "Serverless" não significa "sem servidor". Significa que você não precisa se preocupar com o servidor. A plataforma (AWS, Google Cloud, Vercel) gerencia a infraestrutura: escala, atualiza, corrige. Você apenas envia o código e paga pelo tempo de execução.

\n\n

Para o PHP, isso parece um desafio. Afinal, o PHP tradicionalmente requer um servidor web (Apache, Nginx) e o módulo PHP-FPM. Mas a tecnologia não para.

\n\n

Como o PHP funciona em um ambiente serverless?

\n\n

O problema principal: as funções Lambda (e suas alternativas) são contêineres stateless que duram alguns segundos ou minutos. Elas não "mantêm" sessão na memória, nem executam o Apache. Portanto, um script PHP padrão que espera $_GET ou escreve em $_SESSION precisa ser adaptado.

\n\n

A solução veio na forma de runtimes especiais. Eles transformam um evento Lambda (por exemplo, uma requisição HTTP do API Gateway) em um contexto PHP familiar. A ferramenta mais popular para isso é o Bref.

\n\n

Bref: motor PHP para AWS Lambda

\n\n

Bref é um projeto open-source que permite executar PHP no AWS Lambda "pronto para uso". Ele vem com camadas (layers) prontas que incluem PHP 8.x e extensões populares (PDO, Redis, gd, mbstring).

\n\n

Instalação e primeira execução

\n\n

Para trabalhar, você precisará de:

\n
    \n
  • Uma conta AWS
  • \n
  • composer e aws-cli instalados
  • \n
  • Node.js (para o Serverless Framework)
  • \n
\n\n

Vamos criar uma função simples que retorna um JSON com a hora atual:

\n\n
// index.php\n<?php\nrequire __DIR__ . '/vendor/autoload.php';\n\nuse Bref\\Context\\Context;\nuse Bref\\Event\\Http\\HttpHandler;\n\nclass TimeHandler extends HttpHandler\n{\n    public function handleRequest($request, Context $context): array\n    {\n        return [\n            'statusCode' => 200,\n            'headers' => ['Content-Type' => 'application/json'],\n            'body' => json_encode([\n                'server_time' => date('Y-m-d H:i:s'),\n                'php_version' => PHP_VERSION,\n                'message' => 'Hello from Serverless PHP!'\n            ]),\n        ];\n    }\n}\n\nreturn new TimeHandler();
\n\n

Agora vamos configurar o deploy. Crie o arquivo serverless.yml:

\n\n
# serverless.yml\nservice: php-time-api\n\nprovider:\n    name: aws\n    region: eu-central-1\n    runtime: provided.al2\n\nplugins:\n    - ./vendor/bref/bref\n\nfunctions:\n    api:\n        handler: index.php\n        timeout: 28\n        layers:\n            - ${bref:layer.php-81}\n        events:\n            - httpApi: 'GET /time'
\n\n

Execute o deploy:

\n
composer require bref/bref\nserverless deploy
\n\n

Em um minuto, você receberá uma URL como: https://xxx.execute-api.eu-central-1.amazonaws.com/time. Abra no navegador — você verá o JSON. Parabéns, você acabou de executar uma função serverless PHP no AWS Lambda!

\n\n

Alternativas ao AWS Lambda para PHP

\n\n

Não quer se prender à AWS? Existem alternativas que também funcionam com PHP.

\n\n

Google Cloud Functions (com adaptação)

\n\n

O Google não oferece suporte nativo ao PHP, mas você pode

Blogs

Book Recommendations