Cronjob merupakan salah satu fitur pemrograman untuk menjadwalkan fungsi-fungsi class yang ada di kode backend kita. Dimana Cronjob sendiri adalah fitur untuk menjalankan satu fungsi atau beberapa fungsi untuk diproses dibelakang layar, atau dibelakang proses-proses umum yang di akses oleh user.
Install Nodecron untuk menggunakan Cronjob
yarn add node-cron
Lalu jika anda menggunakan expressjs
anda bisa menggunakan di server.js
root api anda.
...
const express = require('express');
const port = process.env.PORT || 3000;
const app = express();
// Gunakan Nodecron dibawah ini
...
// Sebelum app listen dibawah ini
app.listen(port, () => {
console.log(`App running on ${port}`)
})
Jika melihat aplikasi diatas adalah aplikasi normal yang kita buat dari awal menggunakan expressjs
nah sekarang akan kita tambahkan kode berikut
const dayjs = require('dayjs');
...
const scheduleRunCron = async () => {
const now = new Date();
const nowDate = dayjs(now).format('YYYY-MM-DD');
const nowTime = dayjs(now).format('HH:mm:ss');
console.log(`Date ${nowDate} and Time ${nowTime}`);
};
// Cronjob akan berjalan tiap 2 detik.
const cronjob = cron.schedule('*/2 * * * * *', async () => {
scheduleRunCron();
});
cronjob.start();
kode diatas artinya kita akan menjalankan fungsi scheduleRunCron
setiap 2 detik sekali. anda bisa mengatur ingin dilakukan berapa menit, detik, jam, hari sesuai dengan schedule yang anda inginkan anda bisa melihat parameternya di Package node-cron
dilink ini Node Cron
Nah dibawah ini versi lengkap expressjs
menggunakan package Node Cron yang akan saya jalankan setiap 2 detik sekali.
...
const express = require('express');
const port = process.env.PORT || 3000;
const app = express();
const dayjs = require('dayjs');
// Gunakan Nodecron dibawah ini
// Fungsi Schedule
const scheduleRunCron = async () => {
const now = new Date();
const nowDate = dayjs(now).format('YYYY-MM-DD');
const nowTime = dayjs(now).format('HH:mm:ss');
console.log(`Date ${nowDate} and Time ${nowTime}`);
};
// Cronjob akan berjalan tiap 2 detik.
const cronjob = cron.schedule('*/2 * * * * *', async () => {
scheduleRunCron();
});
cronjob.start()
// Sebelum app listen dibawah ini
app.listen(port, () => {
console.log(`App running on ${port}`)
})