ReactPHP هي مكتبة منخفضة المستوى للبرمجة القائمة على الأحداث في PHP. في جوهرها توجد حلقة حدث، وعلى رأسها توفر أدوات مساعدة منخفضة المستوى، مثل: تجريد التدفقات، ومحلل DNS غير المتزامن، وعميل/خادم الشبكة، وعميل/خادم HTTP، والتفاعل مع العمليات. يمكن لمكتبات الجهات الخارجية استخدام هذه المكونات لإنشاء عملاء/خوادم شبكة غير متزامنة والمزيد.
<?php
// $ composer require react/http react/socket # install example using Composer
// $ php example.php # run example on command line, requires no additional web server
require __DIR__ . ' /vendor/autoload.php ' ;
$ server = new React Http HttpServer ( function ( Psr Http Message ServerRequestInterface $ request ) {
return React Http Message Response:: plaintext (
" Hello World! n"
);
});
$ socket = new React Socket SocketServer ( ' 127.0.0.1:8080 ' );
$ server -> listen ( $ socket );
echo " Server running at http://127.0.0.1:8080 " . PHP_EOL ;
يستجيب خادم الويب البسيط هذا المكتوب بلغة ReactPHP بـ "Hello World!" لكل طلب.
ReactPHP جاهز للإنتاج وتم اختباره من خلال ملايين التثبيتات من جميع أنواع المشاريع حول العالم. إن بنيته المستندة إلى الأحداث تجعله مناسبًا تمامًا لخوادم الشبكة والعملاء ذوي الكفاءة الذين يتعاملون مع مئات أو آلاف الاتصالات المتزامنة والتطبيقات طويلة الأمد والعديد من الأشكال الأخرى من المهام المتعددة التعاونية مع عمليات الإدخال/الإخراج غير المحظورة. ما يجعل ReactPHP مميزًا هو نظامه البيئي الحيوي الذي يضم مئات من مكتبات الطرف الثالث مما يسمح لك بالتكامل مع العديد من الأنظمة الحالية، مثل خدمات الشبكة المشتركة وأنظمة قواعد البيانات وواجهات برمجة التطبيقات الأخرى التابعة لجهات خارجية.
ReactPHP غير محظور افتراضيًا. استخدم العمال لحظر الإدخال/الإخراج. تعتمد حلقة الحدث على نمط المفاعل (ومن هنا الاسم) وهي مستوحاة بقوة من مكتبات مثل EventMachine (Ruby)، وTwisted (Python)، وNode.js (V8).
يُستخدم هذا المستودع الذي تنظر إليه حاليًا في الغالب كمستودع تعريفي لمناقشة وتخطيط كل الأشياء المتعلقة بـReactPHP. راجع المكونات الفردية المرتبطة أدناه للحصول على مزيد من التفاصيل حول كل مكون ووثائقه وكود المصدر الخاص به.
EventLoop ReactPHP حلقة الأحداث الأساسية للمفاعل. اقرأ الوثائق
دفق التدفقات القابلة للقراءة والكتابة المستندة إلى الأحداث للإدخال/الإخراج غير المحظور في ReactPHP. اقرأ الوثائق
الوعد والوعود /تنفيذ PHP. اقرأ الوثائق
الأدوات المساعدة والألياف غير المتزامنة لـ ReactPHP. اقرأ الوثائق
مقبس غير متزامن، دفق نص عادي TCP/IP وخادم مقبس TLS آمن واتصالات العميل لـ ReactPHP. اقرأ الوثائق
مآخذ عميل UDP المستندة إلى حدث مخطط البيانات ومآخذ الخادم لـ ReactPHP. اقرأ الوثائق
تنفيذ عميل HTTP والخادم المتدفق المستند إلى الأحداث لـ ReactPHP. اقرأ الوثائق
محلل DNS Async لـ ReactPHP. اقرأ الوثائق
التخزين المؤقت غير المتزامن لـ ReactPHP. اقرأ الوثائق
مكتبة ChildProcess لتنفيذ العمليات الفرعية. اقرأ الوثائق
PromiseTimer تنفيذ مهلة تافهة لـ Promise lib الخاص بـ ReactPHP. اقرأ الوثائق
PromiseStream الحلقة المفقودة بين Promise-land وStream-land، مبنية على ReactPHP. اقرأ الوثائق
مكتبة Thruway PHP Client and Router لـ Autobahn وWAMP (بروتوكول مراسلة تطبيقات الويب) لمراسلة التطبيقات في الوقت الفعلي voryx/Thruway
PPM - PHP Process Manager PPM هو مدير العمليات، والشاحن الفائق، وموازن التحميل لتطبيقات PHP الحديثة. فب-م/فب-م
php-ar-drone منفذ العقدة-ar-drone الذي يسمح للمستخدم بالتحكم في Parrot AR Drone عبر PHP jolicode/php-ar-drone
السقاطة غير المتزامنة WebSocket خادم السقاطةphp/السقاطة
مكتبة عميل PredisAsync غير المتزامنة PHP لـ Redis مبنية على ReactPHP nrk/predis-async
دليل/redis-server تطبيق خادم Redis في دليل PHP خالص/redis-server
وغيرها الكثير على صفحة الويكي لدينا »
سيرجي جوك سلسلة من المقالات تغطي ReactPHP: من الأساسيات إلى أمثلة التطبيقات الحقيقية. sergeyzhuk.me
تدور سلسلة مدونة Cees-Jan Kiiewiet حول العديد من مكونات ReactPHP وكيفية عملها. blog.wyrihaximus.net
Loïc Faugeron Symfony فائق السرعة - ReactPHP. gnugat.github.io
مارك جي شميدت يجلب الأداء العالي إلى تطبيق PHP الخاص بك (باستخدام ReactPHP). marcjschmidt.de
مارك موريرا عندما يلتقي ReactPHP مع Symfony middle.com/@apisearch
كريستيان لوك يتخطى الحدود باستخدام ReactPHP
جيريمي ميكولا غير متزامن PHP مع React
Igor Wiedler PHP المبني على الأحداث
يتكون ReactPHP من مجموعة من المكونات الفردية. هذا يعني أنه بدلاً من تثبيت شيء مثل "إطار عمل ReactPHP"، فإنك في الواقع تختار فقط المكونات التي تحتاجها.
يتبع هذا المشروع SemVer لجميع مكوناته الثابتة. الطريقة الموصى بها لتثبيت هذه المكونات هي من خلال Composer. جديد للملحن؟
على سبيل المثال، قد يبدو هذا كالتالي:
# recommended install: pick required components
composer require react/event-loop react/http
وكبديل، نوفر أيضًا حزمة تعريفية تقوم بتثبيت جميع المكونات الثابتة مرة واحدة. يوصى بتثبيت هذا فقط للنماذج الأولية السريعة، حيث أن قائمة المكونات الثابتة قد تتغير بمرور الوقت. يمكن تثبيت حزمة التعريف هذه على النحو التالي:
# quick protoyping only: install all stable components
composer require react/react:^1.4
لمزيد من التفاصيل، راجع صفحة ReactPHP الرئيسية للحصول على أمثلة البدء السريع وتفاصيل الاستخدام.
راجع أيضًا سجل التغيير المدمج لجميع مكونات ReactPHP للحصول على تفاصيل حول ترقيات الإصدار.
هل لديك سؤال وتحتاج إلى مساعدة بشأن ReactPHP؟ لا تقلق، نحن هنا للمساعدة!
كخطوة أولى، تحقق من الوثائق التفصيلية التي تأتي مع كل مكون (راجع الروابط إلى الوثائق الفردية لكل مكون أعلاه). إذا وجدت أن سؤالك لم تتم الإجابة عليه في الوثائق، فهناك احتمال كبير أن يكون ذا صلة بعدد أكبر من الأشخاص. من فضلك لا تتردد في تقديم سؤالك كمشكلة في المكون ذي الصلة حتى يتمكن الآخرون من المشاركة أيضًا.
يمكنك أيضًا الاطلاع على غرفة الدردشة الرسمية الخاصة بنا في Gitter. معظم الأشخاص المشاركين في هذا المشروع موجودون في غرفة الدردشة هذه، لذلك يتم الرد على العديد من الأسئلة في غضون دقائق قليلة إلى بضع ساعات. نستخدم أيضًا غرفة الدردشة هذه للإعلان عن جميع الإصدارات الجديدة وجهود التطوير المستمرة، لذا فكر في البقاء في غرفة الدردشة هذه لفترة أطول قليلاً.
اتبع أيضًاreactphp على Twitter للحصول على التحديثات. نحن نستخدم هذا في الغالب للحصول على تحديثات أكبر وجديرة بالملاحظة ولإبقاء المجتمع على اطلاع دائم بجهود التطوير المستمرة. يمكنك دائمًا استخدام علامة التصنيف #reactphp
إذا كان لديك أي شيء تريد مشاركته!
نحن مشروع مفتوح للغاية ونفضل التواصل العام كلما أمكن ذلك، حتى يتمكن عدد أكبر من الأشخاص من المشاركة والمساعدة في الحصول على أفضل الحلول المتاحة. وفي الوقت نفسه، ندرك أنه من الأفضل معالجة بعض الأمور على انفراد. سواء كنت تريد فقط أن تقول شكرًا لك ، أو تريد الإبلاغ عن مشكلة أمنية أو تريد المساعدة في رعاية تطوير ميزة معينة، يمكنك التواصل مع الفريق الأساسي على انفراد عن طريق إرسال بريد إلكتروني إلى [email protected]
. يرجى أن تضع في اعتبارك أننا فريق صغير من المتطوعين ونبذل قصارى جهدنا لدعم أي شخص يتواصل معنا.
هل تريد دعم ReactPHP؟ مذهل! لنبدأ بالسماح للعالم بمعرفة سبب اعتقادك بأن ReactPHP رائع ومحاولة مساعدة الآخرين على الانضمام إلينا! أرسل تغريدة، أو اكتب مشاركة على مدونة، أو قم بإلقاء محاضرة في مجموعة المستخدمين المحلية أو المؤتمر أو حتى قم بتأليف كتاب. هناك العديد من الطرق التي يمكنك من خلالها المساعدة. يمكنك دائمًا التواصل معنا على انفراد ومساعدة الآخرين في قنوات الدعم الخاصة بنا. شكرًا لك!
لتشغيل مجموعة الاختبار، تحتاج أولاً إلى استنساخ هذا الريبو ثم تثبيت جميع التبعيات من خلال Composer:
composer install
لتشغيل مجموعة الاختبار، انتقل إلى جذر المشروع وقم بتشغيل:
vendor/bin/phpunit
تحتوي مجموعة الاختبار أيضًا على عدد من اختبارات التكامل الوظيفي التي تعتمد على اتصال مستقر بالإنترنت. ونظرًا للعدد الكبير من اختبارات التكامل، يتم تخطيها بشكل افتراضي أثناء تشغيل CI. إذا كنت لا ترغب أيضًا في تشغيل هذه العناصر، فيمكن تخطيها ببساطة على النحو التالي:
vendor/bin/phpunit --exclude-group internet
معهد ماساتشوستس للتكنولوجيا، راجع الترخيص.