Comet - framework PHP para APIs REST rápidas

Por dois anos, escrevi microsserviços no Go usando geradores de código baseados em Swagger. Descobriu soluções bastante compactas e muito rápidas.

Atualmente, estou usando PHP, então decidi encontrar meios para resolver os mesmos problemas no ecossistema de idiomas. Conheço e amo o Laravel e o Symfony, mas não queria arrastá-los para projetos - há muitas baterias pelas quais você precisa pagar uma curva acentuada para entrar no projeto e no desempenho.
Estrutura PHP para criar uma API REST

Como resultado, o Comet apareceu - uma estrutura moderna baseada em PHP para o desenvolvimento de APIs rápidas usando a experiência das equipes SlimPHP e Workerman. Dezenas de milhares de RPS em uma máquina virtual comum e latência inferior a um milissegundo!

Para não ser infundado, apresentarei os resultados dos testes do Comet e de outras estruturas populares. Para uma comparação mais honesta, todos os módulos pesados ​​como ORM foram removidos da montagem de todos os participantes do teste.

O primeiro caso é uma imitação de uma carga alta na forma de milhares de solicitações wrk competitivas para um método que retorna "Olá, Mundo!" Linha de boas-vindas em texto simples:

imagem

Para estimar o atraso mínimo, usamos a opção na qual um único cliente sequencialmente enviou uma solicitação para o mesmo endpoint:

imagem

Como pode ser visto nos resultados, os recursos da arquitetura Comet permitem processar um fluxo de solicitações dez vezes maior com atrasos mínimos do que as estruturas tradicionais.

Vamos dar uma olhada no código para ter uma idéia do que você encontrará no desenvolvimento real no Comet:

use Comet\Comet;

require_once __DIR__ . '/vendor/autoload.php';

$app = new Comet();

$app->get('/hello', function ($request, $response) {
    $response
        ->getBody()
        ->write("Hello, Comet!");      
    return $response;
});

$app->run();

Tudo é bastante transparente: usar um roteador e encerramentos fornece um código compacto, mais semelhante ao que os desenvolvedores do NodeJS / Express estão acostumados.

Publiquei todo o código no GitHub e planejo expandir os recursos da estrutura:

https://github.com/gotzmann/comet Ficarei

feliz em comentar, confirmar e, é claro - o uso do Comet em projetos reais :)

All Articles