المذنب - إطار PHP لواجهات برمجة التطبيقات REST السريعة

لمدة عامين كتبت خدمات صغيرة على Go باستخدام مولدات التعليمات البرمجية المستندة إلى Swagger. اتضح حلولا مدمجة وسريعة للغاية.

أنا أستخدم PHP حاليًا ، لذلك قررت إيجاد وسائل لحل نفس المشاكل في النظام البيئي للغة. أعرف أحب Laravel و Symfony وأحبهما ، لكنني لم أرغب في جرهما إلى المشاريع - فهناك الكثير من البطاريات التي يجب أن تدفع منحنى إدخالها الحاد للمشروع والأداء.
إطار عمل PHP لإنشاء REST API

ونتيجة لذلك ، ظهر Comet - إطار عمل حديث يعتمد على PHP لتطوير واجهات برمجة تطبيقات سريعة باستخدام تجربة SlimPHP وفرق Workerman. عشرات الآلاف من RPS على جهاز افتراضي منتظم وأقل من زمن الوصول بالمللي ثانية!

لكي لا أكون لا أساس لها ، سأعطي نتائج اختبار المذنب والأطر الشائعة الأخرى. لمقارنة أكثر صدقًا ، تمت إزالة جميع الوحدات الثقيلة مثل ORM من تجميع جميع المشاركين في الاختبار.

الحالة الأولى هي تقليد حمولة عالية في شكل الآلاف من طلبات wrk التنافسية لطريقة تُرجع خط الترحيب "Hello، World!" في نص عادي:

صورة

لتقدير الحد الأدنى من التأخير ، استخدمنا الخيار الذي يرسل فيه عميل واحد بالتتابع طلبًا واحدًا إلى نفس الطلب نقطة النهاية:

صورة

كما يمكن رؤيته من النتائج ، تسمح لك ميزات بنية المذنب بمعالجة تدفق أكبر عشر مرات من الطلبات بأقل تأخيرات من الأطر التقليدية.

دعونا نلقي نظرة على الرمز للحصول على فكرة عما ستواجهه في التطوير الحقيقي على المذنب:

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();

كل شيء شفاف للغاية: استخدام جهاز التوجيه والإغلاق يوفر رمزًا مضغوطًا ، أكثر تشابهًا لما اعتاد مطورو NodeJS / Express.

لقد نشرت جميع التعليمات البرمجية على GitHub وأخطط لتوسيع قدرات الإطار:

https://github.com/gotzmann/comet

سأكون سعيدًا بالتعليقات والالتزامات وبالطبع - استخدام المذنب في المشاريع الحقيقية :)

All Articles