node-cron: جدولة المهام لجافا سكريبت (Node.js)

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو node-cron؟

node-cron هي مكتبة خفيفة الوزن لـ Node.js تسمح بتنفيذ دوال JavaScript وفقًا لجدول زمني باستخدام صيغة تعبيرات cron. إنها مثالية لأتمتة المهام الروتينية: إرسال إشعارات البريد الإلكتروني، تنظيف قاعدة البيانات، تحليل صفحات الويب، أو إنشاء التقارير.

لماذا نحتاج إلى مجدول المهام؟

في تطوير الويب، غالبًا ما يكون من الضروري تنفيذ الكود ليس فورًا، ولكن على فترات زمنية محددة. التشغيل اليدوي للنصوص البرمجية باستخدام setInterval() أو setTimeout() غير مناسب للجداول الزمنية المعقدة (مثل "كل ثلاثاء ثاني من الشهر الساعة 15:00"). يحل node-cron هذه المشكلة من خلال توفير طريقة مرنة وقابلة للقراءة لتحديد الوقت.

التثبيت

قم بتثبيت المكتبة عبر npm:

npm install node-cron

أو استخدم yarn:

yarn add node-cron

الوظائف الأساسية

  • cron.schedule(expression, callback) — تشغيل دالة وفقًا لجدول زمني.
  • cron.validate(expression) — التحقق من صحة تعبير cron.
  • task.stop() — إيقاف المهمة.
  • task.start() — استئناف تنفيذ المهمة الموقوفة.
  • دعم الثواني (حقل إضافي في بداية التعبير).

مثال كود بلغة JavaScript (Node.js)

لنلقِ نظرة على مثال بسيط: تشغيل مهمة كل دقيقة تطبع الوقت الحالي في وحدة التحكم.

const cron = require('node-cron');

// المهمة تُنفذ كل دقيقةconst task = cron.schedule('* * * * *', () => { console.log('تشغيل المهمة:', new Date().toLocaleTimeString());});

// تشغيل المهمةtask.start();

// إيقاف المهمة بعد 5 دقائقsetTimeout(() => { task.stop(); console.log('تم إيقاف المهمة');}, 300000);

شرح تعبير cron: '* * * * *' — الدقيقة، الساعة، يوم الشهر، الشهر، يوم الأسبوع. النجمة تعني "كل". على سبيل المثال، '0 9 * * 1-5' — كل يوم من أيام الأسبوع الساعة 9:00.

مثال مع التحقق من الصحة:

const cron = require('node-cron');

const expression = '30 4 * * 0'; // كل يوم أحد الساعة 4:30 صباحًاif (cron.validate(expression)) { cron.schedule(expression, () => { console.log('تنظيف بيانات يوم الأحد...'); });} else { console.error('تعبير cron غير صحيح');}

متى تستخدم node-cron؟

  • أتمتة النسخ الاحتياطي: إنشاء نسخ احتياطية لقاعدة البيانات مرة واحدة يوميًا.
  • إرسال النشرات البريدية: إرسال نشرة يومية للمشتركين.
  • المراقبة: التحقق من توفر واجهات برمجة التطبيقات الخارجية كل 5 دقائق.
  • تنظيف ذاكرة التخزين المؤقت: حذف البيانات القديمة من Redis أو نظام الملفات.
  • تحليل البيانات: تحميل أسعار العملات أو الأخبار وفقًا لجدول زمني.

المكتبة مثالية للمشاريع الصغيرة والمتوسطة التي لا تحتاج إلى منسق مهام كامل مثل Bull أو Agenda. إذا كان تطبيقك يعمل على خادم واحد ويتطلب سلوكًا بسيطًا مشابهًا لـ cron، فإن node-cron سيكون اختيارًا ممتازًا.

توصيات