thinkjs2.2中的定时任务
暂且先讨论定时任务的其中两种实现方法:
1.setInterval()
setInterval()可按照指定的周期(毫秒数计)来调用函数或者计算表达式;
setInterval()方法会不停的调用该函数,直到clearInterval()被调用或窗口被关闭。由setInterval()返回的id值可用作clearInterval()方法的参数。
而其中:
setTimeOut()方法用于在指定的毫秒后调用函数或者计算表达式,只执行code一次,若要多次调用,请使用setInterval()
1.
function cron(){//定时器任务
let instance = think.controller("crontab", null, "admin");
instance.corntabAction();
} //服务器启动delay毫秒后,开始执行fn,每隔interval毫秒后再次执行fn
function startTasks(fn, interval, delay) {
delay = delay || 0;
setTimeout(function() {
fn();
setInterval(fn, interval);
}, delay);
}
let interval=think.config('questionsfreshtime');//问题表的定时刷新时间 毫秒 4小时 在配置文件中
startTasks(cron,interval,1000*3*60); //服务器启动3分钟后开始循环执行
2.node-crontab
https://thinkjs.org/zh-cn/doc/2.2/crontab.html
在thinkjs2.2中也有相对应的定时器处理方法(3.0存在同样的方法)
import crontab from "node-crontab";
let fn = () => {
//定时任务具体逻辑
//调用一个 Action
let instance = think.controller("crontab", null, "admin");
instance.corntabAction();
};
// 4 小时执行一次
// let jobId = crontab.scheduleJob('0 */4 * * *', fn);
let jobId = crontab.scheduleJob('* * * * *', fn);//1min
//开发环境下立即执行一次看效果
if(think.env === 'development'){
fn();
}
/**
* authon:zhengyeye
* create:2018-05-14
* update:2018-05-14
* desc:定时器操作类
*/ 'use strict'; import Base from './base.js';
export default class extends Base {
/**
* 定时刷新问答表的状态
*
* @returns
*/
async corntabAction(){
//48小时审核通过未回答 改问题状态为已失效 4h
//找出问答表中的提问时间 现在时间-提问时间>4小时&&问题状态status为1 的,并更新其状态为-2
let questionsModel = this.model("questions");
let nowtimestamp = parseInt(new Date().getTime() / 1000);//当前时间戳
let timerange = nowtimestamp-this.config("outquestionstime");
await questionsModel.where({asktime:["<",timerange],status:1}).update({status:-2});
return this.success();
}
}
node-crontab:https://github.com/dachev/node-crontab
其实在使用过程中,我好像发现node-schedule https://github.com/node-schedule/node-schedule 更受欢迎些。其实选哪种,凭个人喜好。
thinkjs2.2中的定时任务的更多相关文章
- spring项目中使用定时任务
当我们希望在某个时间点来执行一些业务方法的时候就用到定时任务,在spring的项目中使用定时任务很简单.如下 第一步.加入jar包 <dependency> <groupId> ...
- 用crontab、crond在嵌入式系统中添加定时任务
在嵌入式系统中,定时任务通过crond和cronttab两个系统命令来联合执行. 其中crond是定时任务的守护进程,系统开始时是没有开启的.crontab主要作用是管理用户的crontab file ...
- 在Java Web项目中添加定时任务
在Java Web程序中加入定时任务,这里介绍两种方式:1.使用监听器注入:2.使用Spring注解@Scheduled注入. 推荐使用第二种形式. 一.使用监听器注入 ①:创建监听器类: impor ...
- Spring Boot 中实现定时任务的两种方式
在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Qua ...
- springBoot中的定时任务
springBoot中的定时任务 1:在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置 2:新建ScheduledTasks任务类 : package c ...
- Storm中的定时任务
1.全局定时器 import java.util.Map; import backtype.storm.Config; import backtype.storm.Constants; import ...
- 如何用 Java 实现 Web 应用中的定时任务?
定时任务,是指定一个未来的时间范围执行一定任务的功能.在当前WEB应用中,多数应用都具备任务调度功能,针对不同的语音,不同的操作系统, 都有其自己的语法及解决方案,windows操作系统把它叫做任务计 ...
- linux 中的定时任务crontab使用方法
linux 中的定时任务crontab使用方法: 切换到root用户,sudo su root (可以设置成不需要输入密码) sudo su - (需要输入当前帐号的密码才能进入.) crontab ...
- Django中通过定时任务触发页面静态化的方式
安装 pip install django-crontab 添加应用 INSTALLED_APPS = [ ... 'django_crontab', # 定时任务 ... ] 设置任务的定时时间 在 ...
随机推荐
- 【转】]Android实现开机自动运行程序
有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service.怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Don't call me, I'll call y ...
- Google File System 学习
摘要 Google的人设计并实现了Google File System,一个可升级的分布式文件系统,用于大的分布式数据应用.可以运行在廉价的日用硬件上,具备容错性,且为大量客户端提供了高聚合的性能. ...
- PHP进阶。
老手段,百度“PHP进阶” 不过,今天运气不错,搜到一个“PHP特级内容讲解”,地址是:http://wenku.baidu.com/course/view/fd8e591b6bd97f192279e ...
- jq dom不存在时绑定事件
$( "a.offsite" ).live( "click", function() { alert( "Goodbye!" ); // j ...
- C# 中base和this关键字
base: 用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数.实例方法和实例属性访问器中. MSDN中小结的具体功能包括: ()调用基类上已被其他方法重写的方法. ()指定创建派 ...
- python pip 更换国内安装源(windows)
1.点击此电脑,在最上面的的文件夹窗口输入 : %APPDATA% 2.按回车跳转到以下目录,新建pip文件夹 3.创建pip.ini文件 4.打开文件夹,输入以下内容,关闭即可(注意:源镜像可替换) ...
- 使用w查看系统负载 vmstat命令 top命令 sar命令 nload命令
w/uptime 查看系统负载 w查看系统负载,uptime跟w一样. [root@centos7 ~]# w 22:34:10 up 6 days, 23:10, 4 users, load a ...
- storm学习之七-storm UI页面参数详解
http://lbxc.iteye.com/blog/1522318 --参考文章 http://blog.csdn.net/rong_89/article/details/39473917 --参考 ...
- ubuntu 4.10~5.10 :古老的ubuntu上安装oracle10g的情况
64位的: 不用想了,安装不上,因为ubuntu库里没有提供编译环境:安装不上gcc-multilib库.也没有libc6-dev-i386库! 自己这点水平,真搞不定! 32位的: 很顺利.很顺利! ...
- 安装unity3d多个版本共存
转自:https://www.cnblogs.com/xsgame/p/3549486.html 用4.3打开两个低版本的unity工程,都报错.... 用低版本打开正常,希望Unity3D版本兼容性 ...