是否有一种方法可以将时间戳保存到应用程序/对象之外,以便在重新启动nodeserver时可以获得该值?我需要这个为我的cronjob。我需要保存最后一次同步,即使我重新启动服务器。
b4lqfgs41#
有很多种方法可以保存这类信息,以便在重新启动节点进程时加载它。一种是将它写入文件系统中的一个文件,然后在启动程序时读取它。要将当前时间戳写入文件,请执行以下操作。
const fs = require('fs') ... fs.writeFile('timestamp.txt', Date.now().toString(), err => {console.error(err)})
要阅读它,请执行以下操作。
const fs = require('fs') ... const timestamp = Number(fs.readFileSync('timestamp.txt'))
显然,要把文件放到正确的目录中,处理错误,以及处理在写文件之前试图读取文件的情况,还有更多的编程工作要做。你也可以把它存储在某种数据库中,但这应该可以满足你的需要,除非你使用的是Heroku这样的系统,在那里文件并不总是在每次运行时被保存。
xoshrz7s2#
当一个进程死亡时,存储在其工作内存中的所有数据(如变量和函数)也随之死亡。我最近编写了一个npm包cashola,它使得在进程重新启动时存储这些数据变得更容易。您可以运行此示例脚本两次,并查看每次的print语句有何不同。
import { rememberSync } from 'cashola'; const myState = rememberSync('timestamp-example'); console.log('Before:', myState); // First run: {} // Second run: { <timeString1>: 'hi! } myState[new Date.getTime().toString()] = 'hi!'; console.log('After:', myState); // First run: { <timeString1>: 'hi! } // Second run: { <timeString1>: 'hi!, <timeString2>: 'hi! }
2条答案
按热度按时间b4lqfgs41#
有很多种方法可以保存这类信息,以便在重新启动节点进程时加载它。一种是将它写入文件系统中的一个文件,然后在启动程序时读取它。
要将当前时间戳写入文件,请执行以下操作。
要阅读它,请执行以下操作。
显然,要把文件放到正确的目录中,处理错误,以及处理在写文件之前试图读取文件的情况,还有更多的编程工作要做。
你也可以把它存储在某种数据库中,但这应该可以满足你的需要,除非你使用的是Heroku这样的系统,在那里文件并不总是在每次运行时被保存。
xoshrz7s2#
当一个进程死亡时,存储在其工作内存中的所有数据(如变量和函数)也随之死亡。我最近编写了一个npm包cashola,它使得在进程重新启动时存储这些数据变得更容易。
您可以运行此示例脚本两次,并查看每次的print语句有何不同。