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