博主在之前写过PHP自动执行任务【PHP自动执行代码 CRON】中写过,基于业务的任务自动执行,不管怎么说在Windos环境下还是普遍很难做到任务的定时,定点进行自动执行。
今天就来说说使用NodeJs+Thinkphp完成各种自动化任务。
简单介绍下NodeJs:Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。
目前NodeJs在各大代码托管平台,基本上也是名列前茅。
首先,你要安装下nodejs,安装方法很简单,这里就不做赘述了,安装完后,由于使用的是CMD命令,所以建议安装下GIT,可能个人比较习惯使用GIT来写命令。
安装的事情,这里就不再多做描述了,直接进入今天的主题NodeJs 在Cron自动执行的应用。
先上一段代码:
var request = require('request'), schedule = require('node-schedule'), schedule.scheduleJob('30 * * * * *', function(){ console.log('---------------------'+ new Date() +'------------------------'); }); //解释下,上面这段代码执行,那么系统会每遇到每分钟的30秒,都会触发一次 * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ | │ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun) │ │ │ │ └───── month (1 - 12) │ │ │ └────────── day of month (1 - 31) │ │ └─────────────── hour (0 - 23) │ └──────────────────── minute (0 - 59) └───────────────────────── second (0 - 59, OPTIONAL)
我们使用了非常著名的schedule来作为今天的主角,schedule还有很多种用法,如下:
1:指定时间执行 var schedule = require("node-schedule"); var date = new Date(2018,9,14,15,40,0); var j = schedule.scheduleJob(date, function(){ console.log('----------------------'+ new Date() +'-------------------------'); }); 取消任务 j.cancel(); 2:每小时固定时间 var rule = new schedule.RecurrenceRule(); rule.minute = 30; var j = schedule.scheduleJob(rule, function(){ console.log('----------------------'+ new Date() +'------------------------'); }); 3:某些时间执行 var rule = new schedule.RecurrenceRule(); rule.dayOfWeek = [0, new schedule.Range(1, 7)]; rule.hour = 20; rule.minute = 0; var j = schedule.scheduleJob(rule, function(){ console.log('---------------------'+ new Date() +'------------------------'); }); 4:每秒执行 var rule = new schedule.RecurrenceRule(); var times = []; for(var i=1; i<60; i++){ times.push(i); } rule.second = times; var c=0; var j = schedule.scheduleJob(rule, function(){ c++; console.log(c); });
相信以上的功能足够你进行拓展开发了。
不过还是远远不够的,之前说了NodeJs基于Cmd命令运行,windows服务器一挂掉,就完了。任务定时就没了,那么怎么解决这个问题。
博主建议使用NoDeJs 的Pm2这个模块来做守护。
首先需要安装pm2:
npm install -g pm2
运行:
pm2 start app.js
完成。
以上我们就完成了,Windos下系统自动,定时,任务的操作。当然我们还可以拓展更多,比如集成下Thinkphp5.0的API开发,那就更加强大了。
本文为逆天的蝈蝈的文章,转载无需和我联系,但请注明cojz8.com
p._苯苯猪:不错 值得参考 还需深入研究下 想把它移植 用于 到监控 到 时间 生效 销毁 执行PHP 方法 等相关功能
2020-03-12 10:20:02 回复