Posted on: February 09, 2026 12:51 AM
Posted by: Renato
Categories: Laravel PHP openswoole PHP Swoole Swoole
Views: 296
O PHP é realmente lento? Os números dizem o contrário! 🚀
Existe um mito persistente no mundo do desenvolvimento de que o PHP é uma linguagem "pesada" ou "bloqueante" por natureza. Mas a verdade é que o PHP moderno, quando desvinculado do modelo tradicional de execução, entrega uma performance que desafia gigantes como Go e Node.js.
O Problema não é a Linguagem, é o Modelo
No modelo tradicional (PHP-FPM), cada requisição HTTP nasce e morre do zero. O PHP precisa carregar extensões, arquivos de configuração e scripts a cada novo clique do usuário. Isso gera um "overhead" que limita o rendimento em cenários de altíssima escala.
A Revolução do OpenSwoole
Como mostra o benchmark recente , quando utilizamos o OpenSwoole, as regras do jogo mudam. O PHP passa a operar com um runtime assíncrono e persistente em memória.
Abaixo, comparamos os resultados de requisições por segundo (RPS) em scripts básicos de retorno JSON:
| Tecnologia | Requisições por Segundo (RPS) | Latência Média |
| Node.js (Express) | ~6.248 req/s | 1.93ms |
| Go | ~29.208 req/s | 409.51us |
| PHP + OpenSwoole | ~63.052 req/s | 188.18us |
Por que o PHP + Swoole venceu?
O segredo está na persistência. Com o Swoole, a aplicação fica "quente" na RAM. O framework é carregado apenas uma vez, eliminando o tempo de inicialização repetitivo. Além disso, a gestão de corrotinas permite que o PHP lide com milhares de conexões simultâneas de forma extremamente eficiente.
O PHP em Produção de Alta Escala
Se antes o Swoole era visto como algo "complexo" ou experimental, hoje ferramentas como o Laravel Octane trouxeram essa performance para o mainstream. Agora é possível ter a produtividade do ecossistema PHP com a velocidade de rascunhar sistemas de alta performance.
Conclusão: O PHP não parou no tempo. Ele evoluiu para ser uma das linguagens mais versáteis e rápidas do mercado atual. Se você ainda baseia sua opinião no PHP 5 de dez anos atrás, está perdendo uma das ferramentas mais poderosas da Web moderna.
E você, já testou o PHP com Swoole ou RoadRunner? Os resultados te surpreenderam? Vamos debater nos comentários! 👇
Excelente! Como o Laravel Octane é a ponte que trouxe essa performance "bruta" do Swoole para o dia a dia dos desenvolvedores, vale a pena entender como ele faz essa mágica sem quebrar o framework.
Aqui está uma comparação detalhada e técnica sobre o funcionamento do Octane:
Laravel Octane: Como ele "doma" o Swoole para a Produtividade
O grande desafio de usar o PHP de forma persistente (mantendo a aplicação viva na RAM) é o gerenciamento de estado. O Laravel foi construído para "morrer" após cada requisição. O Octane resolve isso com uma engenharia inteligente.
1. Modelo Tradicional vs. Modelo Octane
| Característica | PHP-FPM (Tradicional) | Laravel Octane (Swoole/RoadRunner) |
| Ciclo de Vida | Request-Response-Die. Tudo é destruído. | Long-lived process. O framework vive na RAM. |
| Boot do Framework | Ocorre em todas as requisições. | Ocorre uma única vez no início do servidor. |
| Estado da Memória | Limpo a cada ciclo (seguro). | Persistente (exige cuidado com Singletons). |
| I/O (Banco/Redis) | Bloqueante. | Não bloqueante (via Coroutines no Swoole). |
2. O segredo da velocidade: O "Dependency Injection" inteligente
No Octane, o Laravel separa o que é o "Application Container" (serviços fixos) do "Request Container" (dados específicos daquela requisição).
-
Warm-up: Quando o servidor sobe, o Octane pré-carrega todos os Service Providers, rotas e middlewares.
-
Sandbox: Para garantir que um usuário não veja os dados de outro, o Octane "limpa" o container de requisição a cada ciclo, mas mantém o "esqueleto" do framework intacto na memória.
3. Recursos Exclusivos do Octane + Swoole
Além da velocidade pura, o Octane libera superpoderes no PHP que antes eram complexos de implementar:
-
Octane::parallel(): Você pode executar várias tarefas PHP em paralelo e coletar os resultados. Por exemplo, disparar 3 consultas ao banco de dados ao mesmo tempo em vez de uma após a outra.
-
Swoole Tables: Tabelas de dados compartilhadas entre processos que rodam na velocidade da memória RAM (extremamente úteis para contadores ou caches rápidos).
-
Ticks: Executar tarefas em intervalos de segundos diretamente no processo do servidor, sem precisar de Cron Jobs externos.
4. O "Custo" da Performance
Nem tudo são flores. Ao usar Octane, o desenvolvedor precisa estar atento:
-
Memory Leaks: Se você adicionar dados a um array estático e nunca limpar, a memória do servidor vai acabar, pois o processo não reinicia.
-
Singletons: É preciso ter cuidado ao registrar Singletons que dependem da
Request, pois o objetoRequestmuda a cada ciclo, mas o Singleton permanece o mesmo.
Conclusão
O Laravel Octane não apenas torna o PHP rápido; ele muda a categoria da linguagem. Ele permite que você use a sintaxe elegante do Laravel em projetos que exigem milhares de conexões simultâneas, como chats em tempo real, sistemas de telemetria ou APIs de alta performance.
Para testar o Laravel Octane localmente, o jeito mais prático e moderno é usando o Laravel Sail (Docker), pois configurar o Swoole diretamente no sistema operacional (especialmente Windows ou macOS) pode ser uma dor de cabeça devido às dependências de C.
Aqui está o roteiro para você colocar isso de pé e o exemplo de código para usar o paralelismo.
🛠️ Como testar o Laravel Octane localmente (via Sail)
Se você já tem um projeto Laravel, siga estes passos:
1. Instalar o Octane via Composer
No terminal, dentro da pasta do projeto:
Bash
composer require laravel/octane
2. Instalar o Octane no projeto
Execute o comando de instalação e escolha Swoole quando perguntado:
Bash
php artisan octane:install
3. Configurar o Docker (Laravel Sail)
Para que o Swoole funcione no Docker, adicione a variável no seu arquivo .env:
Snippet de código
OCTANE_SERVER=swoole
Depois, publique os arquivos de runtime do Sail para garantir que a extensão Swoole seja instalada na imagem:
Bash
php artisan sail:publish
Dica: Certifique-se de que no seu docker-compose.yml, o container principal tenha a porta 8000 aberta (padrão do Octane).
4. Rodar o Servidor
Agora, em vez do tradicional php artisan serve, você usará:
Bash
./vendor/bin/sail up
# E em outro terminal para iniciar o servidor Octane:
./vendor/bin/sail artisan octane:start --watch
O --watch é essencial no desenvolvimento: ele reinicia o servidor automaticamente sempre que você altera um arquivo PHP.
🏎️ Exemplo Prático: Usando Octane::parallel()
Imagine que seu endpoint precisa buscar dados de um perfil no GitHub, contar posts no banco e verificar uma API de clima. No modelo normal, isso seria sequencial.
Veja como fica com Octane:
PHP
use Laravel\Octane\Facades\Octane;
use Illuminate\Support\Facades\Http;
public function index()
{
// Executa as 3 tarefas simultaneamente!
[$github, $posts, $weather] = Octane::parallel([
fn () => Http::get('https://api.github.com/users/taylorotwell')->json(),
fn () => Post::count(),
fn () => Http::get('https://api.weather.com/v1/...')->json(),
]);
return response()->json([
'user' => $github['name'],
'total_posts' => $posts,
'temp' => $weather['current'],
]);
}
No PHP tradicional, se cada tarefa levasse 1 segundo, o usuário esperaria 3 segundos. No Octane, o tempo total será de apenas 1 segundo (o tempo da tarefa mais lenta).
📊 Como você pode medir a diferença?
Depois de subir o Octane, você pode usar uma ferramenta de benchmark simples como o Apache Benchmark (ab) ou o wrk (usado no print que você enviou) para ver a diferença contra o servidor normal:
Com o servidor Octane rodando:
Bash
# Simula 100 conexões simultâneas por 10 segundos
wrk -t12 -c100 -d10s http://localhost:8000/api/teste
O que observar nos testes:
-
Latência: Você verá que ela cai drasticamente porque o framework já está na memória.
-
Uso de CPU: O Swoole vai distribuir a carga de forma muito mais eficiente entre os núcleos do seu processador.
- Fontes
https://openswoole.com/dashboard
Para aprofundar seus estudos e validar os dados de performance, aqui estão as fontes oficiais e as referências técnicas mais respeitadas no ecossistema PHP moderno:
📚 Documentação Oficial
Estes são os pontos de partida essenciais para entender a arquitetura:
-
Laravel Octane: Documentação oficial do Laravel que explica como integrar Swoole e RoadRunner, além de detalhar o gerenciamento de estados.
-
OpenSwoole: O portal completo para entender corrotinas, servidores HTTP e o modelo de memória compartilhada do Swoole.
-
RoadRunner: O concorrente direto do Swoole, escrito em Go, que também é suportado pelo Octane e serve como um excelente servidor de aplicações PHP.
📊 Benchmarks e Performance
Para comparar números e metodologias de teste:
-
TechEmpower Web Framework Benchmarks: O ranking mais famoso do mundo. Procure pelos resultados de "PHP Swoole" ou "Workerman" para ver como eles se comparam com Go (Gin) e Node (Fastify).
-
Benchmarks do Laravel Octane (Taylor Otwell): O post de lançamento onde o criador do Laravel mostra gráficos comparativos de RPS (Requisições por Segundo).
🛠️ Artigos Técnicos e Estudos de Caso
Para entender os desafios reais (como Memory Leaks e Concorrência):
-
Swoole vs Node.js - Benchmark Performance: Artigos no Medium frequentemente atualizam os números que você viu na imagem que enviou.
-
The PHP Foundation: Acompanhe o blog da fundação que mantém o PHP para ver melhorias no motor (Engine) que impactam diretamente o Swoole e o Octane.
-
PHP Watch: Um site excelente para acompanhar as novidades de performance das versões 8.3, 8.4 e futuras.
🧪 Onde baixar as ferramentas de teste?
Se quiser replicar o benchmark da sua imagem exatamente como está:
-
wrk (HTTP Benchmarking tool): A ferramenta usada no print para gerar carga.
-
K6: Uma alternativa moderna e baseada em JavaScript para testes de carga complexos.
Dica de Ouro:
Ao pesquisar, use termos como "PHP Coroutines", "Non-blocking PHP" e "Event-driven PHP". Isso vai te tirar do mar de tutoriais antigos de PHP 5/7 e te levar para o conteúdo de engenharia de alta performance.
Donate to Site
Renato
Developer