使用cronjob更新和显示MySQL查询的结果

时间:2015-07-24 20:16:57

标签: php html mysql ajax node.js

我有一些麻烦,我怎么能意识到它有一个动态网站,数据通过ajax提取给用户。

在ajax的末尾是一个简单的php脚本,它打开一个MySQL连接到我的数据库并获取一些结果(看起来对所有用户都相同,没有任何特定于用户的结果)以便稍后显示它们,例如在桌子上。

这就是我到目前为止所做的。它正在工作,但是当有数以千计的用户打开网站时...这不会很好,我认为我的服务器不会足够快地更新它。

所以我的目的是每隔x秒用cronjob更新一次想要的结果,我会节省很多资源。

问题在于我不知道如何实现这一部分,我可以得到一些帮助吗?或者我应该忘记ajax并开始使用node.js?

我有一个非常好的根服务器,这也是我的网站空间,所以可以安装一些额外的应用程序。

2 个答案:

答案 0 :(得分:1)

使用memory-cachenode-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);
            });
        }
    });
});

答案 1 :(得分:0)

您可以使用Memcache(或类似的东西)缓存数据。您的cronjob可以根据需要随时运行和刷新缓存。

然后你的AJAX可以调用一个简单的PHP脚本来从缓存中检索数据。