Kerangka Comet - PHP untuk API REST cepat

Selama dua tahun saya menulis microservices on Go menggunakan generator kode berbasis kesombongan. Ternyata solusi yang cukup kompak dan sangat cepat.

Saat ini saya menggunakan PHP, jadi saya memutuskan untuk mencari cara untuk menyelesaikan masalah yang sama dalam ekosistem bahasa. Saya tahu dan mencintai Laravel dan Symfony, tetapi saya tidak ingin menyeret mereka ke dalam proyek - ada terlalu banyak baterai yang Anda harus membayar kurva curam untuk memasuki proyek dan kinerja.
Kerangka kerja PHP untuk membuat API REST

Akibatnya, Comet muncul - kerangka kerja berbasis PHP modern untuk mengembangkan API cepat menggunakan pengalaman tim SlimPHP dan Workerman. Puluhan ribu RPS pada mesin virtual biasa dan latensi kurang dari satu milidetik!

Agar tidak berdasar, saya akan memberikan hasil pengujian Comet dan kerangka kerja populer lainnya. Untuk perbandingan yang lebih jujur, semua modul berat seperti ORM dikeluarkan dari perakitan semua peserta tes.

Kasus pertama adalah tiruan dari beban tinggi dalam bentuk ribuan permintaan wrk kompetitif untuk metode yang mengembalikan "Halo, Dunia!" Baris sambutan dalam teks biasa:

gambar

Untuk memperkirakan keterlambatan minimum, kami menggunakan opsi di mana satu klien secara berurutan mengirim satu permintaan ke permintaan yang sama. titik akhir:

gambar

Seperti dapat dilihat dari hasil, fitur-fitur arsitektur Comet memungkinkan Anda untuk memproses aliran permintaan yang sepuluh kali lebih besar dengan penundaan minimal daripada kerangka kerja tradisional.

Mari kita lihat kode untuk mendapatkan ide tentang apa yang akan Anda temui dalam pengembangan nyata di 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();

Semuanya cukup transparan: menggunakan router dan penutup menyediakan kode yang ringkas, lebih mirip dengan yang digunakan pengembang NodeJS / Express.

Saya telah memposting semua kode di GitHub dan berencana untuk memperluas kemampuan kerangka kerja:

https://github.com/gotzmann/comet

Saya akan senang memberikan komentar, melakukan dan, tentu saja - penggunaan Comet dalam proyek nyata :)

All Articles