Muito interessante seu post, porém tem alguns pontos que eu discordo e vou-lhe mostrar o porque.
- PHP não é interpretado ocasiona perca de performance Isso até pode ser verdade, porém há formas de contornar isso de uma maneira bem legal. De uma maneira geral, sabendo configurar o ambiente você não terá problemas e isso deve ocorrer somente em ambiente de dev/qa. O PHP possui o opcache, que são caches de bytecode que 'pula' a etada de interpretação a cada request, dando um ganho de memória GIGANTESCO. A maior parte da latência é justamente nesse momento de interpretação do script, então com o opcache já eliminamos um bom tempo de resposta (:. Com o PHP 8 ainda tivemos a implementação do JIT que é um opcache 'com bomba', que ajuda ainda mais a aplicação ganhar performance. Você terá um ganho gigantesco de performance e provavelmente isso não será problema. Moral: Se você está com problema de performance PROVAVELMENTE (eu disse provavelmente) o problema não é a linguagem, mas sim a configuração do ambiente ou código.
Eu palestrei sobre isso recentemente em duas faculdades, caso queira dar uma olhada, aqui estão os slides: https://speakerdeck.com/renandelmonico/tunando-seu-php-em-producao-com-cache-de-bytecode.
-
Falta de
async/await
Claro, isso é um 'problema', porém pode ser contornado em qualquer aplicação. Trabalho com CQRS e os comandos são sempre 'Fire and forget', ou seja, eu envio uma requisição para a aplicação e não fico esperando executar determinada ação para ter uma resposta, possuo um middleware que já me devolve uma resposta enquanto o PHP fica processando 'por trás dos panos'. Dê uma olhada nas funçõesignore_user_abort(), ob_start(), ob_end_flush(), ob_flush() e flush()
. -
PHP para projetos médios/grandes Na empresa que trabalho usamos PHP para projetos grandes e processamento de um bom número de dados e não temos problemas com performance. Com as ferramentas certas (profiling da aplicação) conseguimos identificar facilmente onde o código está lento e otimizar e normalmente é problema de lógica. Então sim, eu usaria PHP para projetos maiores, PORÉM depente do que o projeto se propõe. Com certeza devemos considerar as demais linguagens antes de tomar uma decisão.
Gostei muito do seu comentário =) Concordo que com o opcache ajuda bastante a performance e ele é bem tranquilo de configurar. Sobre essa questão do async/await, acaba caindo na ponto de alternativas como comentei no texto, conheco o Swoole. Ele possui essas chamadas "por de baixo do capo" que você comentou.
No geral, ainda me parece que é um esforço adicional (e talvez desnecessário) quando você tem outras opções que já resolvem isso nativamente, o que acaba (na minha opinião) derrubando a possibilidade de criar novos projetos grandes em PHP. Claro que quando você já tem sistemas escritos é uma outra história..