6

シンプルにしようと思うので、必要なのは、MySQLクエリ(テーブルからレコードを選択)を実行し、たとえばcronジョブなどを使用して5分ごとにクエリを生成し、このクエリまたは結果をファイルに保存するか、可能であればグローバル変数を使用して、それをすべてのクライアントに提供します(つまり、データベースに再接続せずに、すべてのユーザーに同じクエリを使用します)。キャッシュを使用するように指示される人がいることはわかっていますが、検索しました。テーブルが変更された場合、新しいキャッシュがあり、テーブルは常に変更されています。テーブルが変更されたかどうかは関係ありません。すべてのクライアントに同じクエリを提供したいだけです。それは可能ですか?あなたの推薦をお願いします。ありがとう。

テーブルが変更されると(挿入、更新、削除など)、キャッシュは自動的に期限切れになります。そして、私のテーブルは絶えず変化しているので、テーブルが変更された場合でもキャッシュを保存することは可能ですか?または別の解決策を探す必要がありますか?

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
}

ただし、キャッシュを使用する目的は、データベースクエリのような高価なリソースを取得せずにリクエストを処理すること
ですが、頻繁に更新する必要がある場合は、キャッシュの実装はあまり役に立ちません。

memcacheの例: http: //php.net/manual/en/book.memcache.php

memcacheを使用するには、memcacheモジュールをコンパイルし、memcacheサーバーをセットアップして起動する必要があります

于 2012-11-26T05:21:20.687 に答える