আমাদের অনেক সময় দরকার হয় নির্দিষ্ট সময়ের মধ্যে কাজ রিপিট করা বা একটা নির্দিষ্ট সময়/দিনে কাজ চালানো। node js এর মধ্যে এইসব কাজ করতে চলে আসে দুইটা কনসেপ্ট। একটা হচ্ছে setInterval, আরেকটা cron job
কখন কোনটা ইউজ করা উচিত?
রিয়েল-টাইম আপডেট (যেমন: লাইভ স্কোর, নোটিফিকেশন),ক্লায়েন্ট সাইড টাইমার বা অ্যানিমেশন, ব্রাউজার-ভিত্তিক অ্যাপ্লিকেশন, দ্রুত এবং ঘন ঘন হওয়া টাস্ক গুলার জন্য setInterval is good to go.
setInterval(() => {
console.log("Running every 5 seconds...");
}, 5000);
Limitations: সার্ভার বন্ধ হয়ে গেলে setInterval() আর চলবে না। কারন setInterval এর লাইফসাইকেল node process এর মধ্যেই সীমাবদ্ধ।
Cron Job হলো শিডিউলার, যেটা নির্দিষ্ট সময়, দিন, বা তারিখে টাস্ক চালাতে পারে। যেটা সাধারনত সিস্টেম লেভেল থেকে কাজ করানো সম্ভব কোনো রানিং এপ্লিকেশন / প্রসেস এর উপর ডিপেন্ড না।
তবে, Node.js এ এর জন্য সাধারণত node-cron প্যাকেজ ব্যবহার করা হয়। যখন আমাদের প্রয়োজন হয় নির্দিষ্ট সময়ে টাস্ক শিডিউল করা, যেমন: প্রতিদিন রাত ১২টায় রিপোর্ট জেনারেট করা সাপ্তাহিক ব্যাকআপ নেওয়া নির্দিষ্ট দিনে ডাটাবেস ক্লিনআপ- এরকম নির্দিষ্ট শিডিউলার টাস্কের জন্য ইউজ করা হয় cron job.
একদম নির্দিষ্ট মিনিট,ঘন্টা,তারিখ,মাস, সপ্তাহের নির্দিষ্ট বার এই ৫ টা প্যারামিটার এর মাধ্যমে একদম সুনির্দিষ্ট টাইমে টাস্ক করানোর জন্য cron একদম পারফেক্ট একটা সল্যুশন।
import cron from "node-cron";
cron.schedule("0 0 * * *", () => {
console.log("Running every day at midnight...");
});
note : সার্ভার /node procces অফ হলে এপ্লিকেশন লেভেল এর cron schedule অফ হয়ে যাবে। তবে সিস্টেম লেভেলে cron job সেট করলে সেটা সার্ভার এর উপর ডিপেন্ড করবে না।
summery :
- setInterval = “Repeat after every X seconds”
- Cron Job = “Run at specific time”