作者:ChrisNwamba操作无需自己运行。在本文中,我们将了解如何在Node程序中创建和使用Cron作业。为此,我们将创建一个简单的程序,自动从服务器中删除自动生成的error.log文件。cron作业的另一个优点是您可以安排程序以不同的时间间隔执行不同的脚本。先决条件要继续本教程,您需要具备以下条件:Node安装在您的计算机上NPM安装在您的计算机上JavaScript入门基础知识首先,使用以下命令为您的项目创建一个新的Node程序,然后将其初始化:mkdircron-jobs-nodecdcron-jobs-nodenpminit-yInstallNodemodules我们需要几个依赖项才能使程序运行。您可以通过运行来安装它们:npminstallexpressnode-cronfsexpress-网络服务器node-cron-node.js的纯JavaScript任务调度程序fs-文件系统模块构建后端服务器创建一个index.js文件,然后导入必要的节点模块:touchindex.js按如下方式编辑index.js文件://index.jsconstcron=require("node-cron");constexpress=require("express");constfs=require("fs");应用程序=快递();[...]这是node-cron的入口点。我们希望能够定期删除错误日志文件,而无需手动执行。我们将使用node-cron来执行此操作。我们先来看一个简单的任务。将以下内容添加到您的index.js文件中://index.js[...]//安排要在服务器上运行的任务cron.schedule("*****",function(){console.log("runningataskeveryminute");});app.listen(3128);[...]现在当我们运行服务器时,我们得到以下结果:>nodeindex.jsrunningataskeveryminuterunningatask每分钟调度任务的时间间隔通过node-cron可以调度不同时间间隔的任务。让我们看看如何安排不同时间间隔的任务。在上面的示例中,我们创建了一个简单的Cron作业,将参数*****传递给.schedule()函数。这些参数在使用时有不同的含义:******||||||||||星期几||||月份|||月日||小时|minutesecond(optional)在这个例子中,如果你想在每个月的21号从服务器上删除日志文件,你可以更新index.js如下://index.jsconstcron=require("node-cron");constexpress=require("express");constfs=require("fs");app=express();//调度任务在servercron.schedule("**21**",function(){console.log("--------------------");console.log("RunningCronJob");fs.unlink("./error.log",err=>{if(err)throwerr;console.log("错误文件删除成功");});});app.listen("3128");当服务运行时,您将获得以下输出:注意:要模拟此任务,您可以通过在参数中设置分钟数来将间隔设置为更短的时间。您可以在调度程序中执行任何操作。从创建文件到发送电子邮件和运行脚本的一切。让我们看看更多用例用例2-备份数据库确保用户数据的可访问性对任何企业都至关重要。万一你的数据库不小心损坏了,如果你没有备份,那么一切都会变得一团糟。为避免这种情况发生,您还可以使用cron作业定期备份数据库中的现有数据。让我们看看如何做到这一点。为了便于说明,我们将使用SQLite数据库首先,我们需要安装一个允许我们运行shell脚本的Node模块:npminstallshelljs同时安装SQLite:npminstallsqlite3现在,通过运行以下命令创建示例数据库:sqlite3database.sqlite要在每晚11:59备份数据库,请更新你的index.js文件如下://index.jsconstfs=require("fs");letshell=require("shelljs");constexpress=require("express");app=express();//备份数据库cron.schedule("5923***",function(){console.log("------------------");console.log("正在运行的Cron作业");if(shell.exec("sqlite3database.sqlite.dump>data_dump.sql").code!==0){shell.exit(1);}else{shell.echo("数据库备份完成");}});app.listen("3128");现在,当您使用以下命令运行服务时:nodeindex.js将导致以下结果:用例3-每隔一段时间发送一次电子邮件您还可以使用Cron作业以不同的时间间隔发送电子邮件,让您的用户了解最新情况在您的业务中进行。例如,您可以整理一个有趣的链接列表,并在每周日将它们发送给用户。为此,您需要执行以下操作。通过运行以下命令来安装nodemailer:npminstallnodemailer完成后,更新index.js文件,如下所示://index.jsconstcron=require("node-cron");constexpress=require("express");letnodemailer=require("nodemailer");app=express();//创建邮件传输器lettransporter=nodemailer.createTransport({service:"gmail",auth:{user:"COMPANYEMAIL@gmail.com",pass:"userpass"}});//定期发送邮件cron.schedule("****Wednesday",function(){console.log("--------------------");console.log("RunningCronJob");letmailOptions={from:"COMPANYEMAIL@gmail.com",to:"sampleuser@gmail.com",subject:`不是GDPR更新;)`,text:`你好,这封邮件是我们自动发送的`};transporter.sendMail(mailOptions,function(error,info){if(error){throwerror;}else{console.log("邮件发送成功!");}});});app.listen("3128");注意:出于测试目的,您需要暂时允许Gmail帐户进行非安全登录。现在,当使用nodeindex.js运行服务时,您将得到以下结果:在程序中使用。这是GitHub上源代码的链接。
