Comet - Framework PHP pour les API REST rapides

Pendant deux ans, j'ai écrit des microservices sur Go à l'aide de générateurs de code basés sur Swagger. Il s'est avéré des solutions assez compactes et trÚs rapides.

J'utilise actuellement PHP, j'ai donc dĂ©cidĂ© de trouver des moyens de rĂ©soudre les mĂȘmes problĂšmes dans l'Ă©cosystĂšme du langage. Je connais et j'aime Laravel et Symfony, mais je ne voulais pas les faire glisser dans des projets - il y a trop de batteries pour lesquelles vous devez payer une courbe d'entrĂ©e raide pour le projet et les performances.
Framework PHP pour créer une API REST

En conséquence, Comet est apparu - un cadre basé sur PHP moderne pour développer des API rapides en utilisant l'expérience des équipes SlimPHP et Workerman. Des dizaines de milliers de RPS sur une machine virtuelle ordinaire et moins d'une milliseconde de latence!

Afin de ne pas ĂȘtre infondĂ©, je donnerai les rĂ©sultats des tests de Comet et d'autres frameworks populaires. Pour une comparaison plus honnĂȘte, tous les modules lourds comme l'ORM ont Ă©tĂ© retirĂ©s de l'assemblage de tous les participants au test.

Le premier cas est une imitation d'une charge élevée sous la forme de milliers de demandes wrk compétitives pour une méthode qui renvoie «Bonjour, monde!» Ligne de bienvenue en texte brut:

image

Pour estimer le dĂ©lai minimum, nous avons utilisĂ© l'option dans laquelle un seul client envoyait sĂ©quentiellement une demande Ă  la mĂȘme point de terminaison:

image

Comme le montrent les résultats, les fonctionnalités de l'architecture Comet vous permettent de traiter un flux de demandes dix fois plus important avec des délais minimaux que les frameworks traditionnels.

Jetons un coup d'Ɠil au code pour avoir une idĂ©e de ce que vous rencontrerez en dĂ©veloppement rĂ©el sur 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();

Tout est assez transparent: l'utilisation d'un routeur et de fermetures fournit un code compact, plus similaire à ce à quoi les développeurs NodeJS / Express sont habitués.

J'ai posté tout le code sur GitHub et je prévois d'étendre les capacités du framework:

https://github.com/gotzmann/comet

Je serai heureux de commenter, commettre et, bien sûr - l'utilisation de Comet dans des projets réels :)

All Articles