• 1401/08/08

ساخت تسک :

سلام استاد و خسته نبایشد.

دارم روی tasks ها کار میکنم و به مبحث کرون جاب برخورد کردم و با اینکه خودم سرچ کردم ولی به چندیدن سوال بی جواب برخورد کردم.

1- تفاوت cron job با متد setInteval()  چی هست. خودم سرچ کردم میگن پر فومنس بهتری داره ولی اونقدر زیاد نیست که بخواد استفاده بشه.

2 -فرض کنین می خوام یک عملیات در سرور ام ساعت 10 شب انجام بدم ، باید بیام یک setInterval ست کنم و تایم شو هر 1 دقیقه قرار بدم و داخل اون متد new Date().gethours رو بنویسم و بگم هر اگه الان ساعت برابر 10 بود فلان عملیات رو انجام بده یا راه بهتری هم هست.

3- فرض کنین در پنل ادمین یک قسمت داریم که کاربر مثل لیست todo یک task برای خودش به وجود اورده و مثلا گفته ساعت 2 برای من یک اس ام اس روی گوشی ارسال بشه. آیا من باید بیام SetInterval رو روی 1 ثانیه ست کنم و بگم برو تو دیتابیس (برای سرعت بهتر روی ردیس ذخیره میکنیم ) بخون کدوم سند با date سیستم سرور ما یکی هست و الان sms رو ارسال کن.

استاد مشکلم این هست که فک میکنم بقییه کار دیگه ای میکنن و اینکه این کار فشار زیادی به سرور ما وارد میکنه.

 

 

  • 1401/08/09
  • ساعت 15:34

سلام دوست من

زمانی از cronJob استفاده میکنیم که میخوایم کاری در زمان خاصی به صورت اتوماتیک انجام بشه و در سطح سیستم عامل مورد استفاده قرار میگیره و روی این باید زیاد فکر بشه چون همانطوری که گفتم در سطح سیستم عامل پیاده سازی میکنیم پس باید روی هر سیستم عاملی که هستیم روند متفاوتی داشته باشیم چون که از cronjob خود سیستم عامل استفاده کنیم . این روش پیشنهاد نمیشه چون در سطح خود جاوااسکریپت پیاده سازی کنیم خیالمون راحت هست که همیشه و در همه جا به یک صورت کار خواهد کرد.

حالا ماژولی به نام node-cron داریم که این کارو آسون میکنه برای ما .یعنی پیاده سازی میکنیم و خیالمون راحته که همه جا بدون مشکلی اجرا میشه.

ماژول جدیدتری هم داریم به نام bree که خیلی بهتر هست .

همچنین ماژول node-schedule  هم موجود هست  و مورد معروف دیگر هم agenda هست

خودت باید بر حسب نیازت انتخاب کنی

مثل میخوایم سرور هر هفته بیاد از پایگاه داده بک آپ بگیره و روی یک سرور دیگری آپلود کنه یا اینکه روزانه برخی بخش های پایگاه داده پاک سازی بشه و از این جور کارها. یعنی کارهایی که تکرار میشن بهتر هست توسط cron job پیاده سازی بشه تا setInterval.

برای اینکاری که گفتی میتونی از مواردی که برات قرار دادم استفاده کنی و بررسی کنی که هرکدوم راحتتر و قابل فهم تر هست رو انتخاب کنی. برای کاری که گفتی باید مثلا در ساعت خاصی یا هر ساعت یا دقیقه بررسی کنی که کی پیام ها ارسال بشن بسته به داده هایی که درون پایگاه داده داری و همانطور که داده هارو دریافت میکنی از پایگاه داده و اگر با شرطی که گذاشتی همخوانی داشت همونجا یک cron یا schedule میسازی برای تک تک مواردی که میخوای .

مثلا کاربر task ساخته و میخواد در ساعت فلان یادآوری بشه :‌برای اینکار cron job نباشه بهتر هست چون تنها یکبار نیاز هست یادآوری بشه و فکر میکنم node-schedule یا bree گزینه بهتری باشن.

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

موفق باشی


logo-enamadlogo-samandehi