[英]Using a cronjob to update and display results of a MySQL query
我在如何实现一个动态网站方面遇到了麻烦,该网站通过ajax将数据提取给用户。
在ajax的末尾是一个简单的php脚本,该脚本打开一个与我的数据库的MySQL连接并获取一些结果(对所有用户而言都是相同的,没有任何特定于用户的结果),以便稍后在表中显示它们。
这就是我到目前为止的事情。 它正在运行,但是当成千上万的用户打开该网站时……这不好,而且我认为我的服务器更新得不够快。
因此,我的意图是每隔x秒仅更新一次所需的结果,并且可能会节省很多资源。
问题是我不知道该如何实现这一部分,请问能得到一些帮助吗? 还是我应该忘记Ajax的东西并开始使用node.js?
我有一个相当不错的根服务器,它也是我的网站空间,因此可以安装一些额外的应用程序。
一个真正的使用memory-cache
和node-cron
Node.js解决方案:
var cache = require('memory-cache');
var CronJob = require('cron').CronJob;
var job;
var jobStarted = false;
var rateLimitExceeded = false;
var job = new CronJob('5 * * * * *', function() {
// Runs every 5 seconds
doALongDataBaseOperation(function(err, data) {
cache.put('cacheId', data);
});
});
app.get('/path/that/needs/caching', function(req, res) {
cache.get('cacheId', function(e, data) {
if (data) {
res.end(data);
} else {
// contingency in case the cache doesn't exist
doALongDataBaseOperation(function(err, data) {
res.end(data);
cache.put('cacheId', data);
});
}
});
});
您可以使用Memcache(或类似的东西)来缓存数据。 您的cronjob可以根据需要运行和刷新缓存。
然后,您的AJAX可以调用一个简单的PHP脚本以从缓存中检索数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.