عن المشروع
Swoole هي إضافة للغة PHP توفر بيئة تشغيل تزامن مبنية على الأحداث وغير متزامنة وقائمة على الكوروتينات. وهي مكتوبة كإضافة بلغة C ويتم تثبيتها عبر PECL أو تجميعها من المصدر؛ وتتطلب Linux أو macOS أو Cygwin أو WSL، وPHP 8.2 أو أحدث، وGCC 4.8 أو أحدث.
القدرات الأساسية الموصوفة في ملف README:
- الكوروتينات: يتيح جدولة الكوروتينات المدمجة للمطورين كتابة كود PHP يبدو متزامنًا لكنه يُنفَّذ بشكل غير متزامن. توصف الكوروتينات بأنها خيوط فائقة الخفة، حيث يمكن إنشاء آلاف منها في عملية واحدة.
- خطافات وقت التشغيل: يستبدل Swoole\Runtime::enableCoroutine() مؤشرات دوال تدفق Zend VM بحيث تصبح دوال الإدخال/الإخراج المحظورة غير محظورة ومجدولة بالكوروتينات. تتضمن التكاملات المدعومة ext-curl (مع Symfony وGuzzle)، وext-redis، وext-mysqli، والعديد من برامج تشغيل PDO (MySQL وPostgreSQL وSQLite وOracle وODBC)، ودوال التدفق عبر TCP/UDP/UDG/Unix/SSL-TLS وواجهات برمجة أنظمة الملفات، وext-sockets، وext-soap، ودوال النوم، وproc_open، وgethostbyname، وshell_exec، وexec، ودوال الملفات مثل fread/fopen/fsockopen/fwrite/flock.
- الخوادم: يمكن لخوادم HTTP وWebSocket وHTTP/2 وTCP مشاركة حلقة أحداث واحدة؛ مثال خادم WebSocket يستمع أيضًا إلى TCP خام على منفذ ثانٍ. تستخدم طبقة الشبكة epoll/kqueue.
- العملاء: يتم عرض عملاء كوروتينات لـ HTTP وWebSocket وHTTP/2 وTCP، مع جدولة تلقائية لمعالجة DNS والطلبات والاستجابات.
- القنوات: توفر Swoole\Coroutine\Channel اتصالًا بأسلوب CSP بين الكوروتينات، مع توضيح باستخدام تجمع اتصالات Redis ومثال منتج/مستهلك.
- المؤقتات: Swoole\Timer::tick وafter وclear وexists، بالإضافة إلى حلقات نوم مبنية على الكوروتينات.
- أعباء العمل المختلطة: يوضح ملف README 10K من عمليات النوم، وقراءة/كتابة الملفات، واستعلامات PDO/MySQLi، وتبادلات خادم-عميل TCP/UDP داخل عملية واحدة باستخدام خطافات وقت التشغيل.
خيارات التثبيت هي PECL (pecl install swoole) أو البناء من المصدر (phpize، configure، make، make install)، مع علامات اختيارية مثل --enable-openssl و--enable-sockets و--enable-mysqlnd و--enable-swoole-curl. تم نقل العملاء غير المتزامنين وواجهات برمجة التطبيقات إلى إضافة منفصلة باسم swoole_async بدءًا من الإصدار 4.3.0. المشروع مرخص بموجب Apache 2.0 ويشير إلى wiki.swoole.com للتوثيق، ومستودع مساعد IDE، وقائمة Awesome Swoole، وقنوات المجتمع على Twitter وDiscord ومجتمع باللغة الصينية.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.