تخطّ إلى المحتوى
TubePress — مجاني، مستضاف ذاتياً & مُصان باستمرار
مرجع المطوّرين

سكربتات Cron وواجهة سطر الأوامر

مجدول pseudo-cron وسكربتات سطر الأوامر الاختيارية للخوادم المتقدّمة.

يُنفّذ TubePress مهامه الدورية — من إعادة حساب التصنيفات، واستطلاع مهام التحويل، واستيراد الموجزات، وتحديث خرائط المواقع وغير ذلك — دون الحاجة إلى ضبط crontab النظام. تشرح هذه الصفحة pseudo-cron، ونبضة القلب التي تُبقيه حيًّا، والنصوص البرمجية الاختيارية لسطر الأوامر للمضيفين المتقدمين.

الـ pseudo-cron

يُعدّ CronManager جدول مهام على غرار WordPress. تُسجَّل المهام باسم وفترة زمنية، ويُستدعى CronManager::run() مرةً واحدة في نهاية كل عملية تصيير للصفحة. لا تعمل كل مهمة إلا إذا مرّ وقتٌ كافٍ منذ آخر تشغيل لها.

// Register a task (typically from a plugin's boot() method)
CronManager::register('promo_refresh', 600, function () {
    Promo::rebuildCache();   // runs at most every 10 minutes
});

صُمِّم ليكون آمنًا على أيّ مضيف:

  • قفل ذري. يحجز UPDATE المشروط على جدول settings كل تشغيل، فلا يمكن لطلبَين متزامنَين أن ينفّذا المهمة ذاتها مرتين.
  • طوابع زمنية دائمة. تُخزَّن أوقات آخر تشغيل في settings (مع autoload = 0)، فيظل الجدول الزمني سليمًا بعد إعادة التشغيل والانهيارات — إذ يستأنف تحميل الصفحة التالي العمل من حيث توقف.
  • التراجع التلقائي. تُعاد المحاولة مع المهمة التي تستمر في رمي الأخطاء بفاصل زمني يتضاعف أسيًّا (بحدٍّ أقصى ساعة واحدة) حتى تتعافى، ويُعاد ضبط عداد الأخطاء عند النجاح.

نبضة القلب — لا حاجة إلى crontab

لا يعمل pseudo-cron إلا عند تصيير الصفحات، وهذا يُشكّل مشكلةً للمواقع الجديدة أو ذات الزيارات المنخفضة. يحلّ TubePress هذه المشكلة بـنبضة قلب مُدارة ذاتيًا: عملية CLI خفيفة (bin/heartbeat.php) تُرسل طلبًا إلى صفحتك الرئيسية كل 50 ثانية تقريبًا، فيظل المجدول يعمل حتى مع انعدام الزوار.

  • محميٌّ بـPID ويُعاد إطلاقه تلقائيًا بأي طلب ويب إن توقف — لا تحتاج إلى تشغيله أو مراقبته.
  • يمكن إيقافه أثناء التشغيل بضبط heartbeat_enabled على 0.
هذا هو سبب تشغيل TubePress على الاستضافة المشتركة. بفضل pseudo-cron ونبضة القلب، تُنفَّذ المهام المجدولة دون الحاجة إلى crontab -e، أو مُشرف، أو خدمات إضافية للصيانة.

ما الذي يعمل على المجدول

يُسجّل النواة والإضافات المرفقة مهامها الخاصة — مثل إعادة حساب درجات CTR، وإرسال مهام التحويل وإعادة المحاولة، واستيراد الموجزات، ومعالجة الكتالوج، ومهام الترجمة بالذكاء الاصطناعي وتحديثات خرائط المواقع. عند تفعيل الأنظمة الفرعية تُضاف مهامها تلقائيًا؛ لا شيء تحتاج إلى إعداده.

نصوص CLI الاختيارية

بالنسبة للعمليات الثقيلة أو الفردية، تأتي بعض نصوص سطر الأوامر في bin/ ويمكن تشغيلها يدويًا أو من crontab حقيقي على المضيفين القادرين. تشمل عمّالًا طويلي الأمد (لتنزيلات الكتالوج والحذف الجماعي) ومساعدي الصيانة. شغّلها باستخدام PHP CLI للنظام من جذر المشروع:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
طابق PHP لـ CLI مع PHP للويب. شغّل نصوص CLI بإصدار PHP نفسه الذي يستخدمه موقعك (8.2 أو أحدث). سيرفض الحارس البدءَ بأي إصدار أقدم.

استخدام crontab حقيقي (متقدم)

إن كنت تفضّل تشغيل المجدول من نظام التشغيل — مثلًا على موقع عالي الزيارات حيث تريد توقيتًا دقيقًا وقابلًا للتنبؤ — يمكنك تعطيل نبضة القلب وإضافة إدخال cron واحد في النظام يطلب صفحتك الرئيسية (أو يُشغّل نبضة القلب مرة واحدة) بفاصل زمني قصير. معظم المشغّلين لا يحتاجون إلى هذا قط؛ نبضة القلب المدمجة كافية.

الخطوات التالية

لا تزال عالقاً؟

افتح تذكرة من لوحة التحكم وسيساعدك فريقنا.

جرّب العرض التجريبي المباشر → تحميل TubePress →