در حال بارگزاری ...

استفاده از Cron Jobs در اپلیکیشن های Node.js

توسط الهام غایب
آخرین به روز رسانی سه شنبه 11 آذر 1399

گاهی ممکن است بخواهید کارهای خاصی را در زمان‌های مشخصی روی سرور اپلیکیشن خود انجام دهید، در این مواقع می‌توانید کار را به Cron Jobها بسپارید. در این مقاله از لیداوب، می‌آمو

گاهی ممکن است بخواهید کارهای خاصی را در زمان‌های مشخصی روی سرور اپلیکیشن خود انجام دهید، در این مواقع می‌توانید کار را به Cron Jobها بسپارید.


در این مقاله از لیداوب، می‌آموزیم که چگونه Cron Jobها را ایجاد کرده و از آن‌ها در اپلیکیشن‌های Node.js خود استفاده کنیم. برای انجام این کار یک اپلیکیشن ساده ایجاد می‌کنیم که به صورت خودکار فایل‌های ایجاد شده error.log را از سرور پاک می‌کند. یکی دیگر از مزایای Cron Jobها این است که می‌توانید اجرای اسکریپت‌های مختلف در وقفه‌های زمانی مختلف در اپلیکیشن خود را زمان بندی کنید:

استفاده از Cron Jobs در اپلیکیشن های Node.js

برای این آموزش نیاز به موارد زیر دارید:

- Node را روی دستگاه خود نصب کرده باشید

- NPM را روی دستگاه خود نصب کرده باشید

- دانش ابتدایی از جاوا اسکریپت داشته باشید

بیشتر بخوانید:

در ابتدا، ترمینال را باز کرده و یک پوشه جدید برای پروژه خود ایجاد می‌کنیم و یک اپلیکیشن Node جدید می‌سازیم. سپس، آن را با اجرای دستورات زیر راه‌ اندازی می‌کنیم:

mkdir cron-jobs-node cd cron-jobs-node
    npm init -y

نصب ماژول های Node.js

برای کار با این اپلیکیشن نیاز به نصب چند وابستگی داریم. می‌توانید این وابستگی‌ها را با اجرای دستورات زیر نصب کنید:

 npm install express node-cron fs

express : قدرت وب سرور را افزایش می‌دهد

node-cron : برنامه ریزی وظایف با جاوا اسکریپت برای node.js را بر عهده دارد

fs : ماژول فایل سیستم node

در ادامه مقاله، چند مثال کاربردی از Cron Jobs در اپلیکیشن‌های Node.js آورده شده است که چگونگی استفاده از Cron Jobها را به خوبی آموزش می‌دهد.

مثال اول، ایجاد سرور بک اند

یک فایل index.js ایجاد کرده و ماژول‌های ضروری node را در آن وارد کنید:

 touch index.js

فایل index.js را ویرایش کنید تا ظاهر زیر را داشته باشد:

 // index.js
    const cron = require("node-cron");
    const express = require("express");
    const fs = require("fs");

    app = express();

    [...]

حالا در اینجا از node-cron استفاده می‌کنیم. می‌خواهیم فایل‌های طولانی خطا را در وقفه‌های زمانی مشخصی پاک کنیم، برای این کار از node-cron استفاده می‌کنیم. اجازه دهید ابتدا به یک task ساده نگاه کنیم. کد زیر را به فایل index.js خود اضافه کنید:

  // index.js
    [...]
    // schedule tasks to be run on the server   
    cron.schedule("* * * * *", function() {
      console.log("running a task every minute");
    });

    app.listen(3128);
    [...]

حالا وقتی سرور را اجرا می‌کنیم، نتیجه زیر را دریافت می‌کنیم:

  > node index.js

    running a task every minute
    running a task every minute

وقفه های زمانی مختلف برای زمان بندی وظایف

با node-cron می‌توانیم وظایفی را برای وقفه‌های زمانی متفاوتی زمان بندی کنیم. در مثال بالا، ما یک Cron Job ساده اجرا کردیم، پارامترهای اضافه شده به تابع .schedule() شامل ***** بودند. این پارامترها در زمان استفاده دارای معانی مختلفی هستند:

     * * * * * *
     | | | | | |
     | | | | | day of week
     | | | | month
     | | | day of month
     | | hour
     | minute
     second ( optional )

با استفاده از این مثال، اگر بخواهیم log file را در بیست و یکم هر ماه از روی سرور پاک کنیم، باید index.js خود را به این صورت بروز رسانی کنیم:

    // index.js
    const cron = require("node-cron");
    const express = require("express");
    const fs = require("fs");

    app = express();

    // schedule tasks to be run on the server
    cron.schedule("* * 21 * *", function() {
      console.log("---------------------");
      console.log("Running Cron Job");
      fs.unlink("./error.log", err => {
        if (err) throw err;
        console.log("Error file succesfully deleted");
      });
    });

    app.listen("3128");

حالا وقتی سرور اجرا می‌شود، خروجی زیر را دریافت می‌کنید:

استفاده از Cron Jobs در اپلیکیشن های Node.js

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

مثال دوم، ایجاد نسخه پشتیبان از دیتابیس

اطمینان از دسترسی پذیری به داده‌های کاربر، کلید هر کسب و کاری است. اگر یک رویداد پیش‌بینی نشده اتفاق افتاده و دیتابیس شما دچار مشکل شود، در این صورت اگر هیچ نسخه پشتیبانی از کسب و کار خود نداشته باشید، با معضلی جدی رو به رو خواهید شد. برای اینکه جلوی این اتفاق را بگیرید، می‌توانید از Cron Jobs برای پشتیبان گیری دوره‌ای از داده‌های موجود بر روی دیتابیس استفاده کنید. ابتدا، باید ماژول node را نصب کنیم که به ما امکان اجرای shell script را می‌دهد:

npm install shelljs

همچنین، باید SQLite را هم نصب کنید:

npm install sqlite3

حالا با اجرای دستور زیر یک دیتابیس ساده ایجاد کنید:

 sqlite3 database.sqlite

برای تهیه نسخه پشتیبان از دیتابیس خود در ساعت ۱۱:۵۹ شب هر روز، باید فایل index.js خود را به این صورت بروز رسانی کنید:

   // index.js
    const fs = require("fs");
    let shell = require("shelljs");
    const express = require("express");

    app = express();

    // To backup a database
    cron.schedule("59 23 * * *", function() {
      console.log("---------------------");
      console.log("Running Cron Job");
      if (shell.exec("sqlite3 database.sqlite  .dump > data_dump.sql").code !== 0) {
        shell.exit(1);
      }
      else{
        shell.echo("Database backup complete");
      }
    });
    app.listen("3128");

حالا وقتی سرور را با دستور زیر اجرا می‌کنید:

node index.js

نتیجه زیر به دست می‌آید:

استفاده از Cron Jobs در اپلیکیشن های Node.js

مثال سوم، ارسال ایمیل در وقفه زمانی n

شما می‌توانید از Cron Jobs برای به روز نگه داشتن کاربران خود از آنچه در کسب و کارتان می‌گذرد از طریق ارسال ایمیل در وقفه‌های زمانی مختلف استفاده کنید. برای مثال، می‌توانید فهرستی از لینک‌های جالب تهیه کرده و آن‌ها را هر جمعه برای کاربران خود ارسال کنید. برای انجام این کار باید مراحل زیر را اجرا کنید.

با اجرای دستور زیر nodemailer را نصب کنید:

  npm install nodemailer

وقتی انجام شد، فایل index.js خود را به این صورت بروز رسانی کنید:

    // index.js
    const cron = require("node-cron");
    const express = require("express");
    let nodemailer = require("nodemailer");

    app = express();

    // create mail transporter
    let transporter = nodemailer.createTransport({
      service: "gmail",
      auth: {
        user: "[email protected]",
        pass: "userpass"
      }
    });

    // sending emails at periodic intervals
    cron.schedule("* * * * Wednesday", function(){
      console.log("---------------------");
      console.log("Running Cron Job");
      let mailOptions = {
        from: "[email protected]",
        to: "[email protected]",
        subject: `Not a GDPR update ;)`,
        text: `Hi there, this email was automatically sent by us`
      };
      transporter.sendMail(mailOptions, function(error, info) {
        if (error) {
          throw error;
        } else {
          console.log("Email successfully sent!");
        }
      });
    });

    app.listen("3128");

حالا وقتی سرور را با استفاده از دستور node index.js اجرا می‌کنید، نتیجه زیر به دست می‌آید:

استفاده از Cron Jobs در اپلیکیشن های Node.js

به همین سادگی با چند مثال ساده کاربردهای Cron Job را در جاوا اسکریپت فرا گرفتید و می‌توانید در اپلیکیشن‌های node.js خود از آن‌ها استفاده کنید. 

دوره‌های آموزش طراحی سایت در لیداوب:

آموزش جاوا اسکریپت

آموزش CSS

آموزش HTML مقدماتی

مقالات تخصصی و دوره‌های آموزشی طراحی سایت در لیداوب، می‌تواند به شما کمک کند تا به یک طراح حرفه‌ای سایت تبدیل شوید. با ما همراه باشید.

دیدگاه ها

دیدگاه ها : 0


متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

رایگان

اشتراک گذاری در
سورس خرید و فروش ارزهای دیجیتال
ثبت امتیاز
0.3 (3 رای)

   لطفا صبر کنید ...