قم بإنشاء شياطين متعددة المعالجة القوية والمستقرة بدون رمز Boilerplate. تعالج فئة الخفيون الأساسية الحلقة والأحداث الرئيسية ويمكن أن تعمل على أي تردد مرغوب فيه (ضمن حدود PHP) . عليك فقط تنفيذ طريقة واحدة execute لتشغيل عملية الخفي ، اختياريا في الخلفية.
باستخدام المهام والعمال ، يمكن للخفيون استدعاء طرق الخلفية بسلاسة مع القلق بشأن إدارة الأطفال المتشعبين. تتيح لك المكونات الإضافية إنشاء رمز قابل لإعادة الاستخدام القابل للمشاركة بسهولة. راجع قسم الميزات أدناه لمزيد من المعلومات.
من الواضح أن الكتابة القوية والمستقرة وطويلة الأمد في PHP ليست فكرة جيدة بشكل عام. من الصعب جدًا على الأقل القيام به ، والقيام بعمل جيد. أنا شخصياً كنت بحاجة إلى شيطان في PHP لأنني كان لدي إطار عمل كامل موقع الويب مدمج في Symfony الذي يحتاج إلى خفي كبير في النهاية. أردت أن أكون قادرًا على إعادة استخدام جميع التبعيات والكيانات في الواجهة الأمامية مع موارد التكرار أو التكوينات.
على الرغم من أن هذه المكتبة تفعل كل ما في وسعها للسماح لك بإنشاء خفيون صخري صلب ، إلا أنه لا يزال يجب أخذ الرعاية في رمز أرض المستخدم للحفاظ على استقرار الأمور.
انظر الويكي للوثائق.
انظر دليل الأمثلة للحصول على أمثلة يمكنك تشغيلها.
Main Loop من قبل فئة الخفي الأساسية. كل ما عليك فعله هو تنفيذ طريقة واحدة execute التي سيتم استدعاؤها في كل دورة حلقة. يمكن أن يكون تردد الحلقة أي قيمة كسرية في الثواني. إذا تم ضبطها على 0 ، فسيتم استدعاء طريقة execute الخاصة بك بأسرع وقت ممكن ( لا ينصح عادةً ، ما لم تكن حلقةك تقوم بنوع من مكالمات الحظر ، أي: الاستماع على مقبس ، إلخ ).تتيح لك المهمة استدعاء أي طريقة أو رد اتصال في عملية خلفية. لا يتم إجراء اتصال بين عملية الخلفية والوالد. المهام مخصصة للأشياء البسيطة ، على سبيل المثال: إرسال بريد إلكتروني.
يتيح لك العامل استدعاء أي طريقة على كائن ، أو حتى مجرد رد اتصال بسيط مثل المهمة. يمكن للعمال إعادة قيمة إلى الوالد عبر بيان return بسيط في طريقة (طرق) العمال. يتم الحفاظ على العمال تلقائيًا ويمكن أن يكون هناك العديد من الأطفال الذين يعملون في نفس الوقت ، والذي يتم التعامل معه بشفافية. حتى إذا مات العامل أو قتله نظام التشغيل ، فسيظل واجهة برمجة تطبيقات Daemon يعيد نتيجة (أو استثناء) إلى الكود الخاص بك. قيمة الإرجاع للعامل عادة ما تكون كائن Promise . يمكنك استخدام أساليب الوعد القياسية مثل then أو otherwise للعمل على قيمة الإرجاع. أو يمكنك تسجيل رد اتصال ON_RETURN على العامل.
يستخدم العمال نمط تصميم الوسيط ويستخدمون الذاكرة المشتركة لقائمة انتظار الرسائل والبيانات. يمكن إنشاء فئات IPC المختلفة لتوفير طرق اتصال بديلة بين الوالد والأطفال. قد أعمل على فئة IPC ثانية تستخدم مآخذ التوصيل بدلاً من SHM لتوفير خيار بديل .
Daemon على العديد من الأحداث (انظر: الأحداث) التي يمكنك التعامل معها بسهولة من خلال تسجيل رد الاتصال. بعض الأحداث لديها وسائل لتغيير سلوك الخفي.ON_SIGNAL في الكود الخاص بك. سيتم تمرير رد SignalEvent الخاص بك مع الإشارة التي تم القبض عليها.Plugin البسيط استخدام وإنشاء المكونات الإضافية الخاصة بك التي يمكن حقنها في الخفي. يمكن تحميل الإضافات بتكاسل.FileLock Core Plugin إضافة آلية قفل لمنع تشغيل الخفي من تشغيل أكثر من مثيل في وقت واحد. ما عليك سوى تسجيل البرنامج المساعد في الخفي والباقي تلقائي. يتشابه ShmLock ولكنه يستخدم الذاكرة المشتركة للحصول على قفل.Daemon على 3 طرق تسجيل أساسية: log ، error ، debug . كل هذه سوف تكتب إلى ملف السجل (إذا تم تكوينه). إذا تم تدوير ملف السجل أو الكتابة فوقه أو حذفه ، فسيقوم البرنامج الخفي تلقائيًا باكتشاف ذلك وسيستمر في الكتابة إلى ملف السجل الجديد. يتيح لك حدث Daemonevent :: ON_LOG تسجيل رد اتصال لتغيير السلوك أيضًا. يمكن لبرمز المستخدم استخدام LogTrait لإضافة تسجيل Daemon الأصلي بسهولة إلى التعليمات البرمجية الخاصة بهم.استلهم أساس هذه المكتبة من مكتبة PHP-Daemon من Shane Harter على Github. لسوء الحظ ، تم التخلي عن مكتبته (أو كانت على توقف غير محدد) ، تمت كتابةها لـ PHP v5.3 ، ولم يكن لها أي أسماء أو إدارة حزمة أو محمل تلقائي (أي: الملحن).
اخترت إنشاء مكتبة جديدة تمامًا بدلاً من شوك وتعديل مكتبته الأصلية لأغراض تعليمية. كما أنني لم أتفق مع بعض منهجياته. أنا أتطلب بعض التبعيات الإضافية ، لكن الملحن يجعل هذه مشكلة تافهة.
_ هذه المكتبة في حالة عمل بالكامل. لقد قمت بإنشاء شياطين معقدة للغاية تم تشغيلها لعدة أشهر مع أي تسرب أو حوادث ذاكرة. يمكن فعل المزيد ...