A Polling API é a atualização mais subestimada do PHP
O PHP 8.6 contém uma atualização silenciosa que muda tudo para redes de alta concorrência.
Enquanto muitos desenvolvedores debatiam generics, a Polling API passou por um RFC com muito pouco barulho. Ela recebeu apoio de figuras importantes, como o criador do FrankenPHP e o autor do Composer.
Por anos, o PHP dependeu do stream_select(). Esta ferramenta utiliza uma chamada de sistema de 1983. Ela possui três falhas principais:
- Ela atinge um limite de 1024 descritores de arquivo na maioria dos sistemas.
- Ela utiliza complexidade O(n), o que significa que o desempenho cai à medida que você adiciona conexões.
- Ela carece de acesso a ferramentas modernas como epoll no Linux ou kqueue no macOS.
É por isso que bibliotecas assíncronas como AMPHP ou ReactPHP exigiam extensões extras como ext-uv para ter um bom desempenho. O PHP carecia da base nativa para redes de alta escala.
A Polling API corrige essa lacuna.
Ela introduz o namespace Io\Poll. Esta API escolhe automaticamente o melhor backend para o seu sistema. Ela utiliza epoll no Linux, kqueue no macOS e event ports no Solaris. Você não precisa gerenciar esses detalhes.
Veja como funciona na prática:
Você cria um Context.
Você envolve um stream em um StreamPollHandle.
Você o adiciona ao contexto com os eventos que deseja monitorar.
Você chama wait() para receber apenas os gatilhos que realmente ocorreram.
Isso não é um event loop completo. É uma primitiva de baixo nível. Ela fornece a infraestrutura que permite que os event loops funcionem de forma mais rápida e confiável.
A verdadeira mágica é interna. Esta API permite que o núcleo do PHP e as extensões compartilhem uma interface unificada. Ela possibilita:
- Manipulação eficiente de sinais para o FrankenPHP.
- Melhor manipulação de eventos em workers do PHP-FPM.
- Interfaces padronizadas para sockets e curl.
- Modos edge-triggered de alto desempenho.
As pessoas costumam dizer que o PHP não consegue escalar. Por muito tempo, havia uma razão técnica para essa afirmação. O PHP não tinha acesso nativo às primitivas de polling usadas pelo Nginx ou Go.
Com o PHP 8.6, essa desculpa acabou.
As melhores mudanças de infraestrutura são frequentemente invisíveis. Você não nota o epoll. Você apenas nota que um servidor lida com dez mil conexões sem esforço.
A Polling API é o trabalho sem glamour que eleva o teto de todo o ecossistema.
Fonte: https://dev.to/juststevemcd/the-polling-api-is-the-most-underrated-rfc-php-has-shipped-in-years-2d32
