ما هو node-cron؟
node-cron هي مكتبة خفيفة الوزن لـ Node.js تسمح لك بتشغيل دوال JavaScript (مهام) وفقًا لجدول زمني باستخدام صيغة تعبيرات cron. وهي مشابهة لمدير المهام النظامي cron في Unix، ولكنها تعمل داخل تطبيقك.
لماذا نحتاجها؟
المكتبة ضرورية لأتمتة العمليات الروتينية على الخادم: تنظيف قاعدة البيانات، إرسال الرسائل البريدية الجماعية، إنشاء النسخ الاحتياطية، تحديث ذاكرة التخزين المؤقت، تحليل البيانات، وأي مهام دورية أخرى. هذا يغنيك عن الحاجة لكتابة مؤقتات خاصة بك وإدارة الفواصل الزمنية يدويًا.
التثبيت
يتم التثبيت عبر npm أو yarn:
npm install node-cronأو
yarn add node-cronالوظائف الأساسية
- بساطة الصياغة: يستخدم تعبيرات cron القياسية (دقائق، ساعات، أيام، إلخ)
- المرونة: دعم الثواني، منطقة زمنية اختيارية، التنفيذ في أيام الأسبوع/عطلات نهاية الأسبوع
- إدارة المهام: دوال
start()وstop()وdestroy()للتحكم في التنفيذ - الخفة: لا يتطلب تبعيات خارجية، حجم المكتبة ضئيل للغاية
مثال كود بلغة JavaScript (Node.js)
const cron = require('node-cron');
// مهمة: طباعة رسالة كل دقيقةcron.schedule('* * * * *', () => { console.log('المهمة تُنفذ كل دقيقة');});
// مهمة: كل يوم في الساعة 9:30 صباحًاcron.schedule('30 9 * * *', () => { console.log('مهمة يومية في الساعة 9:30');});
// مهمة: كل يوم اثنين في الساعة 8:00cron.schedule('0 8 * * 1', () => { console.log('الاثنين، 8:00 — وقت التقرير');});
// مهمة بالثواني: كل 10 ثوانٍcron.schedule('*/10 * * * * *', () => { console.log('مرت 10 ثوانٍ');});
// إيقاف المهمة بعد 5 ثوانٍconst task = cron.schedule('*/1 * * * * *', () => { console.log('مهمة لا نهائية');});setTimeout(() => { task.stop(); console.log('تم إيقاف المهمة');}, 5000);متى تستخدمها
استخدم node-cron عندما تحتاج إلى تنفيذ كود في وقت محدد أو بفترة زمنية محددة داخل تطبيق Node.js. هذا مثالي لـ:
- تنظيف الملفات المؤقتة أو السجلات بانتظام؛
- إرسال الإشعارات أو البريد الإلكتروني وفقًا لجدول زمني؛
- مزامنة البيانات مع واجهات برمجة التطبيقات الخارجية؛
- إنشاء التقارير في الخلفية؛
- تشغيل الاختبارات أو فحوصات صحة الخادم.
المكتبة غير مناسبة للأنظمة الموزعة عالية التحميل (من الأفضل استخدام قائمة انتظار المهام)، ولكنها الحل الأمثل لمعظم السيناريوهات النموذجية.
```