ما هو node-cron؟
node-cron هي مكتبة خفيفة الوزن لـ Node.js تسمح بتنفيذ دوال JavaScript وفقًا لجدول زمني، باستخدام صيغة تعبيرات cron من أنظمة UNIX. إنها مثالية لأتمتة المهام الروتينية: تنظيف ذاكرة التخزين المؤقت، إرسال رسائل البريد الإلكتروني الجماعية، النسخ الاحتياطي لقواعد البيانات، أو مراقبة الخادم.
لماذا نحتاج إلى مجدول المهام؟
في تطبيقات الويب، غالبًا ما يكون من الضروري تنفيذ كود في وقت محدد، وليس فقط بناءً على طلب المستخدم. بدلاً من استخدام خدمات خارجية (مثل cron على الخادم)، يعمل node-cron مباشرة داخل عملية Node.js الخاصة بك. هذا يبسط عملية النشر، ولا يتطلب إعداد مجدول النظام، وهو مثالي للتطبيقات المعبأة في حاويات (Docker, Kubernetes).
التثبيت
يتم التثبيت عبر npm بأمر واحد:
npm install node-cronبعد التثبيت، المكتبة جاهزة للاستخدام — لا حاجة لأي تبعيات إضافية.
الوظائف الأساسية
- جدولة مرنة — دعم لأنماط cron القياسية (الدقائق، الساعات، الأيام، الأشهر، أيام الأسبوع).
- التشغيل والإيقاف — يمكن تشغيل أو إيقاف كل مهمة حسب الطلب.
- معالجة الأخطاء — يمكن تعيين دالة رد اتصال لتسجيل الأخطاء دون تعطل التطبيق.
- صيغة بسيطة — طريقتان فقط:
scheduleوvalidate.
مثال كود بلغة JavaScript (Node.js)
لنقم بإنشاء مهمة تطبع الوقت الحالي في وحدة التحكم كل دقيقة:
const cron = require('node-cron');
// المهمة تنفذ كل دقيقة: '* * * * *'
cron.schedule('* * * * *', () => {
console.log('تم تنفيذ المهمة:', new Date().toLocaleString());
});
console.log('تم تشغيل المجدول. اضغط Ctrl+C للخروج.');مثال أكثر تعقيدًا — إرسال تقرير كل يوم في الساعة 8 صباحًا:
const cron = require('node-cron');
cron.schedule('0 8 * * *', () => {
console.log('جاري إرسال التقرير اليومي...');
// هنا تقوم باستدعاء دالة إرسال البريد الإلكتروني
}, {
scheduled: true,
timezone: 'Europe/Moscow'
});التحقق من صحة تعبير cron:
const isValid = cron.validate('*/5 * * * *');
console.log(isValid); // trueمتى تستخدم node-cron؟
- أتمتة النسخ الاحتياطي — إنشاء نسخة احتياطية لقاعدة البيانات كل ليلة.
- التنظيف الدوري — حذف الجلسات القديمة أو الملفات المؤقتة.
- المراقبة — التحقق من توفر الخدمات وإرسال التنبيهات.
- النشرات البريدية — إرسال رسائل البريد الإلكتروني وفقًا لجدول زمني (مثل النشرات الإخبارية).
- تحديث ذاكرة التخزين المؤقت — إعادة بناء ذاكرة التخزين المؤقت في ساعات غير الذروة.
مكتبة node-cron مناسبة للمشاريع من أي حجم — من البرامج النصية البسيطة إلى بنية الخدمات المصغرة. لا تتطلب تبعيات خارجية وتعمل بثبات حتى مع فترات التشغيل الطويلة.