PHP — não é uma "linguagem para sites de cartão de visita"
\n\nPor muito tempo, existiu um estereótipo na comunidade de desenvolvedores: PHP é uma linguagem para blogs simples, lojas virtuais e "sites feitos nas coxas". A realidade, como sempre, é mais complexa e interessante. Hoje, o PHP opera no núcleo de gigantes como Facebook (agora Meta), Wikipedia (o maior recurso enciclopédico do planeta), Mail.ru e Etsy. Além disso, 77% de todos os sites cuja linguagem de programação é conhecida usam PHP (dados da W3Techs para 2024).
\n\nNeste artigo, analisaremos casos reais de empresas que não apenas usam PHP, mas o escalam para milhões de requisições por segundo. Você verá como é o código de produção, quais soluções arquiteturais foram adotadas e quais lições podem ser extraídas para seus próprios projetos.
\n\nCaso nº 1: Facebook e HHVM — quando o PHP "superou" a si mesmo
\n\nProblema: o PHP tradicional não suportava a carga
\n\nEm 2010, o Facebook enfrentou o problema clássico de crescimento: o número de usuários ultrapassou 500 milhões, e a quantidade de requisições PHP por página era de centenas. O interpretador PHP padrão (Zend Engine) consumia muita memória e processador. Cada requisição era processada do zero — compilação, execução, destruição do contexto.
\n\nOs engenheiros do Facebook seguiram um caminho não convencional: criaram o HipHop for PHP e, em seguida, o HHVM (HipHop Virtual Machine). Isso não é apenas uma otimização, mas uma compilação JIT completa do PHP para código de máquina.
\n\nSolução arquitetural: compilação JIT e linguagem Hack
\n\nAqui está um trecho típico de código processado pelo HHVM:
\n\n<?php\n\n// Exemplo do código real do Facebook (adaptado)\nclass FeedManager {\n private Redis $cache;\n private Database $db;\n \n public function getUserFeed(int $userId, int $limit = 20): array {\n // Tentativa de obter do cache\n $cacheKey = "feed:user:{$userId}";\n $cached = $this->cache->get($cacheKey);\n \n if ($cached !== null) {\n return json_decode($cached, true);\n }\n \n // Geração do feed com paginação\n $feed = $this->db->query(\n "SELECT * FROM posts WHERE author_id IN (\n SELECT friend_id FROM friendships WHERE user_id = ?\n ) ORDER BY created_at DESC LIMIT ?",\n [$userId, $limit]\n )->fetchAll();\n \n // Armazena em cache por 5 minutos\n $this->cache->set($cacheKey, json_encode($feed), 300);\n \n return $feed;\n }\n}\n\n\nCaracterísticas principais:
\n- \n
- Tipagem — o HHVM suporta tipagem estrita (int, string, array), o que reduz a quantidade de bugs em 40%. \n
- Assincronicidade — o HHVM trabalha com async/await, o que é crítico para processar milhares de requisições paralelas. \n
- Perfilamento — cada requisição é registrada e analisada para identificar gargalos. \n
Resultado
\nO desempenho aumentou em 5-6 vezes em comparação com o PHP padrão. O consumo de energia dos servidores foi reduzido em 50%. Atualmente, a Meta usa o HHVM para processar bilhões de requisições diariamente.
\n\nCaso nº 2: Wikipedia — PHP sem frameworks, mas com arquitetura inteligente
\n\nProblema: como manter mais de 300 idiomas e 50 milhões de artigos?
\n\nA Wikipedia (motor MediaWiki) é um dos projetos PHP mais antigos. A base de código tem mais de 2 milhões de linhas de PHP. Curiosamente, eles optaram conscientemente por não usar frameworks populares (Laravel, Symfony) em favor de uma solução própria.
\n\nSolução arquitetural: modularidade e cache
\n\nAqui está um exemplo típico de um manipulador de página no MediaWiki:
\n\n<?php\n\n// Exemplo simplificado do núcleo do MediaWiki\nclass ArticlePageHandler {\n \n public function render(string $title): string {\n