6

我会尽量简单,所以我需要的是,执行一个 MySQL 查询(从表中选择记录),假设我每 5 分钟使用 cron 作业或其他任何方式生成查询,并将此查询或结果保存到文件或如果可能的话,一个全局变量,然后将它提供给所有客户端(即对所有用户使用相同的查询,而不必重新连接到该数据库。)现在我知道你们中的一些人会告诉我使用缓存,但我搜索了它,如果表发生变化,就会有新的缓存,而且我的表在不断变化,现在我不在乎表是否发生了变化,我只想为所有客户端提供相同的查询。那可能吗?请提出您的建议。谢谢。

当表被修改(插入、更新、删除等)时,缓存会自动过期。而且我的表是不断变化的,所以即使表被修改了也能保存缓存吗?还是我应该寻找不同的解决方案?

4

2 回答 2

1

如果结果集不是太大,您可以将其缓存到生成的脚本中,如下所示:

file_put_contents(
    'mycache.php', 
    '<?php return ' . var_export($results, true) . ' ?>'
);

然后使用它:

$results = include 'mycache.php';
于 2012-11-26T06:34:06.267 回答
0

如果您总是使用相同的方式(函数、类)来执行数据库读取和写入,
您总是可以在每个操作之后放置一个缓存过期

例如:

function add() // update, delete
{
  if (added) $this->expire_cache();
}

function search()
{
  if (results) $this->set_cache(results);
}

function expire_cache()
{
  // do expire or purge cache
}

function set_cache( $db_results )
{
  // saving the database result OR computed result into cache
  // memcache, redis, disk cache or anything
}

但是,拥有缓存的目的是为请求提供服务,而不必像数据库查询那样获取昂贵的资源,
但是如果您需要非常频繁地更新,那么缓存实现就没那么有用了

内存缓存示例: http: //php.net/manual/en/book.memcache.php

您需要编译 memcache 模块,设置和启动 memcache 服务器才能使用 memcache

于 2012-11-26T05:21:20.687 回答