خصائص Workerman
1. تطوير بلغة PHP فقط
يمكن لتطبيقات Workerman العمل بشكل مستقل دون الاعتماد على php-fpm أو apache أو nginx. وهذا يجعل من السهل لمطوري PHP تطوير، نشر، وتصحيح تطبيقاتهم.
2. دعم PHP متعدد العمليات
من أجل الاستفادة الكاملة من أداء الخادم متعدد المعالجات، يدعم Workerman بشكل افتراضي تعدد العمليات والمهام. يفتح Workerman عملية رئيسية وعدة عمليات فرعية لتقديم الخدمات، حيث تتحمل العملية الرئيسية مسؤولية مراقبة العمليات الفرعية، بينما تستمع العمليات الفرعية لشبكة الاتصال وتستقبل وتُعالج البيانات بشكل مستقل، مما يجعل نموذج العملية بسيطًا، مما يجعل Workerman أكثر استقرارًا وكفاءة.
3. دعم TCP وUDP
يدعم Workerman بروتوكولي النقل TCP وUDP، ويمكنك ببساطة تغيير خاصية واحدة لتغيير بروتوكول النقل، دون الحاجة لتعديل كود الأعمال.
4. دعم الاتصالات الطويلة
في كثير من الأحيان يحتاج تطبيق PHP للحفاظ على اتصالات طويلة مع العميل، مثل غرف الدردشة والألعاب، لكن الحاويات التقليدية لـ PHP (apache وnginx وphp-fpm) من الصعب عليها القيام بذلك. باستخدام Workerman، طالما أن خدمة الأعمال في الخادم لا تستدعي بشكل نشط واجهة إغلاق الاتصال، يمكنك استخدام الاتصالات الطويلة في PHP. يمكن لعملية واحدة في Workerman دعم آلاف الاتصالات المتزامنة، بينما يمكن أن تدعم العمليات المتعددة مئات الآلاف أو حتى ملايين من الاتصالات المتزامنة.
5. دعم بروتوكولات طبقة التطبيقات المختلفة
يدعم واجهة Workerman مجموعة متنوعة من بروتوكولات طبقة التطبيقات، بما في ذلك البروتوكولات المخصصة. من السهل أيضًا تغيير البروتوكول في Workerman، فقط من خلال تكوين حقل واحد، يت switch البروتوكول تلقائيًا، وكود الأعمال يكون بدون تعديل، يمكنك حتى فتح منافذ بروتوكولات مختلفة لتلبية احتياجات العملاء.
6. دعم الازدحام العالي
يدعم Workerman مكتبة Libevent للاستطلاع على الأحداث (تحتاج لتثبيت امتداد event)، فالأداء باستخدام Event في الاتصالات الطويلة ذات الحمل العالي ممتاز جدًا، وإذا لم يتم تثبيت امتداد Event، يتم استخدام استدعاءات النظام المتعلقة بـ Select المدمجة في PHP، والأداء أيضًا قوي جدًا.
7. دعم إعادة تشغيل الخدمة بسلاسة
عند الحاجة إلى إعادة تشغيل الخدمة (مثل نشر إصدار)، لا نرغب في إنهاء العمليات التي تعالج طلبات المستخدمين على الفور، كما لا نريد أن يؤدي لحظة إعادة التشغيل إلى فشل الاتصالات مع العميل. يوفر Workerman وظيفة إعادة التشغيل بسلاسة، مما يضمن ترقية الخدمة بسلاسة دون التأثير على استخدام العميل.
8. دعم مراقبة تحديثات الملفات وتحميل تلقائي
خلال عملية التطوير، نرغب في أن تكون التغييرات على الكود سارية على الفور، حتى نتمكن من مشاهدة النتائج. يقدم Workerman مكون مراقبة الملفات FileMonitor، طالما يوجد تحديث في الملف، سيقوم Workerman بتشغيل reload تلقائيًا لتحميل الملفات الجديدة ليصبح لها تأثير.
9. دعم تشغيل العمليات الفرعية بمستخدم محدد
نظرًا لأن العمليات الفرعية هي العمليات التي تعالج طلبات المستخدم، من أجل الاعتبارات الأمنية، لا ينبغي أن تتمتع العمليات الفرعية بامتيازات عالية، لذلك يدعم Workerman تعيين المستخدم الذي تعمل به العمليات الفرعية، مما يجعل خادمك أكثر أمانًا.
10. دعم الاحتفاظ الدائم بالعناصر أو الموارد
أثناء تشغيل Workerman، يتم تحميل وتحليل ملف PHP مرة واحدة فقط، ثم يبقى في الذاكرة، مما يعني أن التصريحات عن الفئات والدوال، وبيئة تنفيذ PHP، ونظام الرموز إلخ لا تتكرر في الإنشاء والتدمير، وهذا يختلف تمامًا عن آلية PHP التي تعمل في الحاويات. في Workerman، يتم الاحتفاظ بعناصر ثابتة أو متغيرات عالمية خلال دورة حياة العملية، طالما لا يتم تدميرها بشكل نشط، بمعنى أنه يمكن إعادة استخدام الطلبات خلال دورة حياة نفس العملية. على سبيل المثال، يكفي تهيئة اتصال قاعدة البيانات مرة واحدة داخل عملية واحدة، وبالتالي يمكن إعادة استخدام هذا الاتصال في جميع الطلبات المستقبلية لتلك العملية، متجنبًا عمليات الاتصال المتكررة مثل المصافحة ثلاثية TCP، والتحقق من صلاحيات قاعدة البيانات، وعملية إنهاء الاتصال التي تحتاج إلى أربعة مصافحات TCP، مما يعزز كفاءة التطبيق بشكل كبير.
11. أداء عالي
بما أن ملفات PHP تُقرأ وتُحلل مرة واحدة من القرص ثم تبقى في الذاكرة، يمكن استخدام الكود التعليمي مباشرة من الذاكرة في المرة القادمة، مما يقلل بشكل كبير من عمليات الإدخال والإخراج على القرص، وأيضًا العمليات المستهلكة للوقت مثل تهيئة الطلب، وإنشاء بيئة التشغيل، والتحليل النحوي، وتحليل الرموز، وترجمة opcode، وإغلاق الطلب، وغير ذلك. ولا يعتمد على nginx أو apache، مما يقلل من تكلفة الاتصال بين الحاويات وPHP. الأهم من ذلك، يمكن أن تظل الموارد محتفظة بشكل دائم، فلا داعي لتهيئة اتصال قاعدة البيانات في كل مرة، لذلك فإن أداء التطبيقات المطورة باستخدام Workerman يكون عاليًا جدًا.
12. دعم HHVM
يدعم التشغيل على آلة HHVM الافتراضية، مما يمكن أن يعزز أداء PHP بشكل مضاعف. خصوصًا في الأعمال ذات عمليات المعالجة المركزية الكثيفة، الأداء ممتاز جدًا. من خلال اختبارات الضغط الفعلية، يُظهر Workerman على HHVM زيادة في الإنتاجية الشبكية تتراوح بين 30% و80% مقارنةً بتشغيله على Zend PHP5.6 في ظروف عدم وجود حمل.