0

我正在 Codeigniter 3 中构建一个应用程序/游戏。有一个应用程序在教室前面的投影仪上运行,其他用户可以通过那里的移动设备玩。应用程序需要向玩家发送 json。它必须在没有任何服务(如 Pusher 或 socket.io)的情况下完成,因为我无法在服务器上安装任何东西,并且没有外部服务的预算。

所以我在用户身上运行了一些 Javascript:

setInterval(function(){
    $.getJSON( "ajax/data/json", { 'id': id }, function( data ){
        // Do stuff with the data if its available
    });
}, 1000);

在应用程序上,我有这样的东西:

public function json()
{
    $this->load->model('data_model');
    $data = $this->data_model->get_json($this->input->get('id'));
    echo json_encode($data);
}

我唯一担心的是游戏同时在多个地点进行。我可以使用 Codeigniters 'Page Caching' 或 'Database Cashing' 来防止过多的数据库请求,实现这一点的最佳方法是什么?或者有没有其他解决方案可以防止这种情况发生?

4

1 回答 1

1

我认为这是一个非常棘手的问题,因为有很多可能性可以解决这个问题

在我看来,最大的加速是使用键/值存储服务器作为“中间”服务器(db -> 键/值存储 -> 输出)我已经在几乎所有 CI 应用程序上安装了 REDIS,因为它是如此快速地

如果您可以访问您的服务器,我强烈建议您安装像 redis 这样的服务。

例如,我快速浏览了一下:

在具有 16 GB 内存的 I5-2500 本地系统上,我可以在大约 1 秒内执行 10.000 个查询

尤其是在 ajax 构建设置中,您必须小心 - 因为您的请求不应超过 100 毫秒(大约!)

这里有一些链接可以从中制作图片:

Github 上的 PHPredis

Redis 文档

如果您无权访问您的服务器,您应该尝试使用基于文件的缓存。有关更多信息,请查看此处(关于缓存的 CI 文档)

于 2015-06-16T10:57:19.437 回答