定时器
const schedule = require('node-schedule')
const script = require('./util/script')
let rule = new schedule.RecurrenceRule()
rule.hour = 2
rule.minute = 0
rule.second = 0
schedule.scheduleJob(rule, () => {
script.clearLogger()
})
schedule.scheduleJob('0 1 1 * * 1', () => {
script.clearRubbishImg()
})
const db = require("../controllers/mysql");
const fs = require("fs");
const path = require("path");
const logger = require("../controllers/logger");
const script = {
async clearLogger() {
const start = new Date();
let time_30 = (
(new Date().getTime() - 60 * 60 * 24 * 30 * 1000) /
1000
).toFixed(0);
let _sql = `delete from logger where unix_timestamp(createTime)<='${time_30}'`;
let row = await db.query(_sql);
const ms = new Date() - start;
let params = {};
params.ms = ms;
params.ip = "本地";
params.address = "局域网";
params.url = "清除日志";
params.method = "clearLogger";
let paramsJson = { _sql: _sql, affectedRows: row.affectedRows };
params.params = JSON.stringify(paramsJson);
await logger.add(params);
},
async clearRubbishImg() {
const start = new Date();
const filePath = path.join(__dirname, `../upload/`);
fs.readdir(filePath, async (err, files) => {
if (err) {
console.warn(err);
} else {
const good_imgsql = `select figure from goods`;
let goodsImg = await db.query(good_imgsql);
const users_imgsql = `select avatar from users`;
let usersImg = await db.query(users_imgsql);
goodsImg = goodsImg.reduce((item, cur) => {
item.push(cur.figure);
return item;
}, []);
usersImg = usersImg.reduce((item, cur) => {
item.push(cur.avatar);
return item;
}, []);
usersImg = usersImg.reduce((item, cur) => {
if (cur?.avatar) {
item.push(cur?.avatar);
}
return item;
}, []);
const SQL_img = [...goodsImg, ...usersImg];
const files_img = files;
for (let i = 0; i < files_img.length; i++) {
let flag = true;
for (let j = 0; j < SQL_img.length; j++) {
if (SQL_img[j].search(files_img[i]) > -1) {
flag = false;
}
}
if (flag) {
fs.unlinkSync(`${filePath}/${files_img[i]}`);
}
}
}
});
const ms = new Date() - start;
params.ms = ms;
let params = {};
params.ip = "本地";
params.address = "局域网";
params.url = "清除多余图片";
params.method = "clearRubbishImg";
params.params = start;
await logger.add(params);
},
};
module.exports = script;