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