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.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:
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:
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/cometJe serai heureux de commenter, commettre et, bien sûr - l'utilisation de Comet dans des projets réels :)