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

标签 php html mysql ajax node.js

我在如何实现一个动态网站时遇到了一些麻烦,其中数据通过 ajax 获取给用户。

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

这就是我到目前为止的情况。它正在工作,但是当有成千上万的用户打开该网站时......这不会很好,我认为我的服务器更新速度不够快。

所以我的目的是每 x 秒在服务器端使用 cronjob 更新一次想要的结果,也许我会节省大量资源。

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

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

最佳答案

一个非常基本的 Node.js 解决方案,使用 memory-cachenode-cron :

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);
            });
        }
    });
});

关于php - 使用 cronjob 更新和显示 MySQL 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619065/

相关文章:

MySQL:一对多表上的条件查询

php - 如何通过 php.ini 禁用警告和通知

asp.net - 垂直和水平滚动不起作用

php - 删除主行和所有子项 mysql 和 php

html - @media 删除顶部 :0; from style

javascript - 数据表中的 masterCheckbox

MySQL从txt文件创建表

mysql - 为什么 SQL 主键索引从 1 开始,而不是从 0 开始?

php - 在同一页面内将 javascript 变量值发送到 php

php - Laravel 两个查询的内连接