بعض الأمور التي يجب على مطوري workerman معرفتها
1. قيود بيئة ويندوز
تدعم بيئة ويندوز في workerman اتصال 200+ كحد أقصى لكل عملية.
لا يمكن استخدام المعلمة count لإعداد تعدد العمليات في أنظمة ويندوز.
لا يمكن استخدام أوامر status و stop و reload و restart في أنظمة ويندوز.
لا يمكن تشغيل عملية خفية في أنظمة ويندوز، حيث ستتوقف الخدمة بمجرد إغلاق نافذة cmd.
لا يمكن تهيئة عدة مستمعات في ملف واحد على أنظمة ويندوز.
لا توجد قيود مماثلة على أنظمة لينكس، لذا يُوصى باستخدام نظام لينكس في البيئات الرسمية، ويمكن اختيار نظام ويندوز في بيئات التطوير.
2. workerman لا يعتمد على apache أو nginx
يعتبر workerman بمثابة حاوية مشابهة لـ apache/nginx، طالما أن بيئة PHP تعمل بشكل جيد، يمكن تشغيل workerman.
3. يتم تشغيل workerman من سطر الأوامر
تشبه طريقة التشغيل استخدام الأوامر كما هو الحال في apache (غالبًا ما تكون مساحات الويب غير قادرة على استخدام workerman). واجهة التشغيل تشبه الصورة أدناه

4. يجب إضافة نبضات القلب للاتصالات الطويلة
يجب إضافة نبضات القلب للاتصالات الطويلة، يجب إضافة نبضات القلب للاتصالات الطويلة، يجب إضافة نبضات القلب للاتصالات الطويلة، قولٌ مهمٌ ثلاث مرات.
ستؤدي الاتصالات الطويلة التي لا تتواصل لفترة طويلة إلى حذفها من قبل نقاط التوجيه مما يؤدي إلى إغلاق الاتصال.
شرح نبضات القلب لـ workerman، شرح نبضات القلب لـ gatewayWorker
5. يجب أن تتطابق بروتوكولات العميل والخادم للتواصل
تعتبر هذه واحدة من المشكلات الشائعة لدى المطورين. على سبيل المثال، إذا كان العميل يستخدم بروتوكول websocket، يجب أن يستخدم الخادم أيضًا بروتوكول websocket (يجب أن يكون الخادم new Worker('websocket://0.0.0.0...')) لتتمكن من الاتصال والتواصل.
لا تحاول الوصول إلى منفذ بروتوكول websocket من شريط عنوان المتصفح، ولا تحاول استخدام بروتوكول websocket للوصول إلى منفذ tcp العاري، يجب أن تتطابق البروتوكولات.
المبدأ هنا يشبه أنه إذا كنت تريد التواصل مع شخص إنجليزي، يجب عليك استخدام اللغة الإنجليزية. وإذا كنت تريد التواصل مع شخص ياباني، فسيتعين عليك استخدام اليابانية. اللغة هنا تشبه بروتوكولات الاتصال، يجب أن يستخدم الطرفان (العميل والخادم) نفس اللغة للتواصل، وإلا فلن يتم التواصل.
6. الأسباب المحتملة لفشل الاتصال
من المشاكل الشائعة عند بدء استخدام workerman هي فشل اتصال العميل بالخادم. الأسباب عمومًا كالتالي:
- جدار حماية الخادم (بما في ذلك مجموعات أمان الخوادم السحابية) يمنع الاتصال (احتمالية 50% أن يكون هذا هو السبب)
- عدم اتساق البروتوكولات المستخدمة بين العميل والخادم (احتمالية 30%)
- خطأ في كتابة عنوان IP أو المنفذ (احتمالية 15%)
- لم يتم تشغيل الخادم
7. لا تستخدم أوامر exit و die و sleep
ستؤدي أوامر exit و die إلى خروج العملية، وستظهر خطأ WORKER EXIT UNEXPECTED. بالطبع، ستعيد العملية التشغيل على الفور لإنشاء عملية جديدة لمواصلة الخدمة. إذا كنت بحاجة إلى إرجاع قيمة، يمكنك استخدام return. ستجعل أوامر sleep العملية نائمة، حيث لن يتم تنفيذ أي عمل أثناء النوم، وسيتوقف الإطار عن العمل، مما سيؤدي إلى عدم معالجة جميع طلبات العملاء في تلك العملية.
8. لا تستخدم دالة pcntl_fork
تستخدم pcntl_fork لإنشاء عمليات جديدة ديناميكيًا، إذا تم استخدام pcntl_fork في شفرة العمل، فقد تؤدي إلى إنشاء عمليات يتعذر استردادها، مما يسبب استثناءً في العمل. ستؤثر pcntl_fork في عمليات الاتصال والرسائل وإغلاق الاتصالات والموقتات، مما يؤدي إلى استثناءات غير متوقعة.
9. لا تضع حلقات لانهائية في شفرة العمل
لا تضع حلقات لانهائية في شفرة العمل، وإلا ستؤدي إلى عدم القدرة على إعادة التحكم إلى إطار workerman، مما سيؤدي إلى فقدان القدرة على استقبال ومعالجة رسائل العملاء الأخرى.
10. يجب إعادة تشغيل الخادم عند تعديل الشفرة
workerman إطار يعمل في الذاكرة بشكل مستمر، لذا يجب إعادة تشغيل workerman لرؤية تأثير الشفرة الجديدة.
11. يُفضّل استخدام إطار GatewayWorker للتطبيقات طويلة الاتصال
يستخدم العديد من المطورين workerman لتطوير تطبيقات طويلة الاتصال، مثل التواصل الفوري وإنترنت الأشياء، يُفضل استخدام إطار GatewayWorker مباشرة، لأنه يقوم بإعادة تغليف العمل على أساس workerman، مما يجعل بناء تطبيقات الاتصال الطويل أسهل وأكثر كفاءة.
12. دعم تزامن أعلى
إذا تجاوز عدد الاتصالات المتزامنة في العمل 1000 اتصال عبر الإنترنت في نفس الوقت، تأكد من تحسين نواة لينكس، وتثبيت مكون event.