سؤال

أنا أحاول أن يأتي مع قائمة من نهج مختلفة تشغيل المهام المجدولة على PHP.هدفي هو تقديم عالمي طريقة تشغيل المهام المجدولة في PHP.حتى الآن لدي:

1) تحليل حركة المرور في الموقع.إذا كنت تتلقى 770 مرات يوميا (وهو واحد ضرب في 2 دقيقة) ، جدولة المهمة ليتم تشغيلها في 6:00 AM زائر طلب الصفحة في 5:59 AM, ثم تشغيل المهمة لأن الزائر القادم سيصل في الساعة 6:01 صباحا في المتوسط.تشغيل = exec('/usr/bin/php -f /home/account/cron.php') في هذه الحالة.

(+) يعمل على جميع منصات طالما مسارات صحيحة.

(-) يتطلب بعض الطاقة وحدة المعالجة المركزية.

(-) يتطلب exec().

(-) ليست دقيقة على المواقع الصغيرة أو على مواقع مع حركة ضخمة المسامير.

2) نسخة محسنة من أعلاه.عندما يطلب المستخدم صفحة مهمة تهدف إلى تشغيل ، لا تستخدم exec() ولكن تشمل() بعد أن كنت قد مسح محتويات المستخدم.

(+) يعمل على جميع المنصات.

(+) لا exec()'s.

(-) يتطلب بعض الطاقة وحدة المعالجة المركزية.

(-) ليست دقيقة على المواقع الصغيرة أو على مواقع مع حركة ضخمة المسامير.

3) تشغيل عملية منفصلة الخلفية بحيث يتم تشغيل في حلقة مستمرة.توفر واجهة المشرف الذي يسمح لك "البداية" و "النهاية" و "الخدمة".فإنه سيتم ثم استخدام fsockopen() الدعوة .السيناريو php الذي يمتد بلا حدود.ويستخدم النوم() أن لا تستهلك الموارد و تستيقظ عندما يحين الوقت المناسب (انظر:time_sleep_until()).يمكن البحث عن الملفات و قراءة لهم فهم عند تشغيل المهام.يمكن إنشاء ملف "تشغيل-كل يوم-3.00 ص" أن يجعل جدولة لتشغيل التعليمات البرمجية داخل منه.

(+) يعمل على جميع المنصات.

(+) لا exec()'s.

(+) يمكن أن تكون دقيقة جدا (مثلا ، إذا كان ينام في دقيقة أساس).

(-) ليست مستقرة - تعطل الخادم توقف جدولة تماما.

(-) بعض المضيفين لا أحب أن يكون عملية تشغيل 24/7/365 = الموارد الخنزير ؟

4) تشغيل exec('crontab') مباشرة على لينكس على حد سواء.

(+) ليس في الموارد خنزير.

(+) دقيقة.

(-) exec().

(-) لا يعمل على جميع المنصات.

5) يسأل عن وحة التحكم تفويض وجعل بعد ذلك إلى إنشاء/إدارة/إزالة crons.

(+) دقيقة

(+) ليس في الموارد خنزير.

(-) سيئة الأمن

(-) يتطلب تفاصيل المستخدم = انخفض الاستخدام

(-) لا يعمل على جميع المنصات (يتطلب لوحة التحكم التي لا تعمل على ويندوز).

(-) يتطلب وحة التحكم.

أي أفكار أخرى ؟

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

المحلول

تقريبا كل الطرق التي اقترحت هي قبيحة ، على الرغم من أن معظم العمل.

قبيح البديل هو اقامة كرون على الجهاز المحلي مع اتصال إنترنت يعمل حليقة الأوامر من أي وقت مضى بضع دقائق.

انها مجرد قبيح مثل جميع الحلول الخاصة بك, ولكن هذا هو قليلا أكثر موثوقية.

نصائح أخرى

يمكنني استخدام ويندوز أداة تسمى VisualCron ping http-كلمة السر المحمية البرامج النصية على الملقمات البعيدة التي ثم تنفيذ مهام محددة.V-C جميلة البريد الإلكتروني الإخطارات حالة بنيت في وكذلك.

علما بأن هذه هي مشابهة جدا زاك بعد حول استخدام المحلية كرون+حليقة أو كرون+wget

http://www.visualcron.com http://www.visualcron.com/img/screenshots/v5/mainwindow/mainwindow_bluetheme.png

هل استخدمت أي وقت مضى جدولة مهام windows أو في الأمر?فمن الممكن استخدامه بمثابة بديل كرون على UNIX.يمكنك (1) كتابة السيناريو PHP الذي ينفذ كل ما يلزم من الأعمال (2) إعداد وظيفة كرون على يونكس أو مهمة مجدولة على ويندوز لتنفيذ هذا السيناريو عبر PHP CLI.

فمن الممكن أيضا أن تنفيذ البرنامج النصي من خلال فتح من HTTP من جهاز بعيد.الجهاز البعيد يمكن أن يكون UNIX أو Windows مربع. wget يمكن أن تستخدم بدلا من متصفح الويب و هو متوفر لكل المنصات.

وأود أن اختيار خادم ثاني / الجهاز الظاهري تشغيل هذه الأنواع من المهام المجدولة.الثانية الخادم يمكن أن يكون بعيدا عن وأداء مهام أخرى مثل يخطر لك عندما الأساسي الخاص بك الملقم لا يستجيب ، إلخ.

بالمناسبة, ما هو تعريف "دقيقة؟"

IMHO ، يجب أن تكتب طبقة فوق هذه الأساليب...

User code <=> [User interface]<-> Your library <->[Technology interface] <=> Technology execution module (method)

ثم لم يكن لديك لتنفيذ جميع الطرق ، ولكن إذا كنت أنت أو العميل الخاص بك بحاجة إلى طريقة جديدة...كل ما عليه هو القيام به هو تنفيذ تقنية واجهة.

راجع للشغل, "التكنولوجيا طريقة التنفيذ" كما يمكن كتابة PHP وحدة للحصول على أداء أفضل / المضيف تكامل النظام.

لو كنت مكانك, كنت انظر القائمة library/وحدة و لن إنشاء خلفية العملية ما لم يكن النظام الأساسي لا يمكن التعامل مع المهام المجدولة (unix و windows تفعل التعامل معها).

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