سؤال

ولدي موقع على شبكة الانترنت مكتوبة في PHP (للكيك) حيث يتم التعامل مع المهام مكثفة مورد معين من خلال عملية الخلفية. ويتم ذلك من خلال قائمة انتظار رسالة Beanstalkd. انا بحاجة الى بعض وسيلة لاسترداد حالة ذلك عملية الخلفية حتى أتمكن من متابعة ذلك مع MONIT.

وهذه العملية هي خلفية للكيك شل (مجرد سيناريو CLI PHP) الذي يتصل مع Beanstalkd. بكل بساطة يقوم الاحتياطي () على Benastalkd وينتظر رسالة جديدة. عندما يحصل على الرسالة، يقوم بمعالجة ذلك. أريد طريقة ما لمراقبة هذه العملية مع MONIT حتى تتمكن من استئناف عملية الخلفية إذا كان هناك شيء قد ذهب خاطئ .

وماذا لقد تم التفكير حتى الآن هو كتابة السيناريو PHP CLI أن يسقط الرسالة في Beanstalkd. عملية خلفية تلتقط الرسالة ويتصل انها الحالة الداخلية إلى النصي CLI بطريقة أو بأخرى. ولكن كيف؟ مآخذ؟ ذكريات مشتركه؟ بعض الطرق IPC آخر؟

وأو أنا ربما يجري معقدة للغاية هنا وهناك وسيلة أسهل بكثير لمراقبة هذه العملية مع MONIT؟

ويرجع الفضل في ذلك مسبقا!

هل كانت مفيدة؟

المحلول

وهنا ما انتهى به في نهاية المطاف.

والسيناريو CLI يتصل beanstalkd، بإنشاء قائمة انتظار الجديد (أنبوب) ويبدأ مشاهدته. ثم فإنه يسقط من أعلى رسالة الأولوية في قائمة الانتظار التي شيطان خلفية يراقب. تحتوي هذه الرسالة على اسم قائمة انتظار جديدة أن السيناريو CLI هو الرصد.

وعملية خلفية يتلقى هذه الرسالة على الفور تقريبا (لأنه هو أولوية قصوى)، ويولد رسالة حالة ووضعه في قائمة انتظار أن السيناريو CLI يراقب. السيناريو CLI يحصل عليه ومن ثم يتم إغلاق قائمة الانتظار.

عند السيناريو CLI لا تحصل على رد في 30 ثانية فإنه سيتم إنهاء مع خطأ يشير إلى شيطان الخلفية (على الأرجح) معلقة.

وأنا مرتبطة كل هذا إلى MONIT. يمكن MONIT الآن تأكد من أن البرنامج الخفي الخلفية قيد التشغيل (عبر قائمة pidfile والعملية) والتحقق من أنها في الواقع لا يزال معالجة الرسائل (باستخدام أداة CLI لاختبار أنه يستجيب لطلبات الحالة)

نصائح أخرى

وربما هناك المساعد لMONIT أو Nagios للاتصال، وتشغيل احصائيات والعودة إذا كان هناك "عدد كبير جدا". ليس هناك 'بروتوكول' سبق أن كتبت عن ذلك، ولكن تي لا يبدو أن تزيد صعوبة في تعديل نظام قائم على النص الحالي (مثل NNTP، أو SMTP) لتفعل ما تريد. يعني كتابته في C الرغم من ذلك، من يتطلع إليها.

ومن السيناريو CLI-PHP، وأود أن تذهب عنه من خلال واحد (أو كليهما) طريقتين مختلفتين.

1 / إسقاط (العش منخفض) رسالة الأولوية في قائمة الانتظار، والتأكد من أنها تعود في غضون ثوان قليلة. وضعه في قائمة انتظار المخلصين والتأكد من عدم وجود شيء قبل وضعها في أن يكون هناك إضافة جيدة كذلك. 2 / تنفيذ "احصائيات" ونرى كيف العديد من ينتظرون: "فرص العمل الحالية-جاهزة '

للحصول على المعلومات إلى موقع على شبكة الانترنت (اي من الاتجاهين)، يمكنك الكتابة إلى ملف، أو إلى ما يشبه أعطها التي GTS قراءة واتخاذ إجراءات بشأنها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top