محسن محمدخانی
3 سال پیش توسط محسن محمدخانی مطرح شد
0 پاسخ

یک schedule سفارشی با nodeJS

سلام
فرض کنیم یک فرم داریم که داخلش کاربر یک زمان مشخصی وارد میکنه و کاریکه قرار انجام بشه

 <h1>enter your date and job</h1>
    <form>
      <input type="date" name="date-run-job"/>
      <select name="job">
          <option>Download file</option>
          <option>Get Date from Api</option>
          <option>Send Notification</option>
      </select>
      <button type="submit">send</button>
    </form>

با کد زیر , میشه این پیاده سازی کرد

var CronJob = require("cron").CronJob;
const dateNow = new Date();
console.log(dateNow);
const specifyTime=dateNow.setSeconds(dateNow.getSeconds() + 3);
let newDate = new Date(specifyTime);
var job = new CronJob(
  newDate,
  function () {
    console.log("do job");
  },
  null,
  true  
);

اما اگر بخواهیم که اون کار غیرفعالش کنیم یا تاریخشو تغییر بدیم قاعدتا باید اونو داخل یک جایی ذخیره کنیم .اون جا میتونه یک جدول mySql یا داخل Mongodb یا هر جای دیگه ذخیره بشه
اگر فرض کنیم داخل یک جدول قراره ذخیره بشه ما جدولی داریم با ستون های زیر
id
title_job
execute_at
state
created_at
updated_at
تاریخ و ساعت اجرا کار در execute_at ذخیره میشه و state هم فعال یا غیر فعال بودن یا اجراشدن و ... رو ذخیره میکنه
اما چطوری nodeJS متوجه بشه که وقت اجرا کدوم ردیف هستش؟
برای این میتونیم که setInterval به مدت یک ثانیه بذاریم که ردیف هایی که زمان فعلی با زمان execute_at برابر بود پیدا کنه و کارشو اجرا کنه که من فکر میکنم کار خوبی نیست
از طرفی اون کار که گفتیم منتظرش باش سر وقتش انجامش بدی و براش schedule قرار دادیم اگر غیرفعالش کردیم چطوری به nodeJS بگیم که اجراش نکنه یا اگر تاریخش ویرایش شد چطوری متوجه این ویرایش تاریخ بشه
آیا برای چنین وضعیتی در نرم افراز , ابزارهای خاصی وجود داره؟


ثبت پرسش جدید

به همدیگه کمک کنیم

به محسن محمدخانی کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام