2012-11-26 5 views
6

シンプルなので、必要なのはMySQLクエリを実行することです(テーブルからレコードを選択する)。 cronジョブなどを5分ごとに実行し、可能であればこのクエリまたは結果をファイルまたはグローバル変数に保存し、すべてのクライアントに提供します(つまり、すべてのユーザーに同じクエリを使用し、そのデータベースに再接続する必要はありません)。 ) 私はキャッシュの使用を教えてくれる人がいることは知っていますが、私はそれを探しました。テーブルが変更されると新しいキャッシュがあり、テーブルが絶えず変化しています。 、私はちょうどすべてのクライアントに同じクエリを提供したい。 これは可能ですか?あなたのお勧めをお願いします。おかげさまで データベースに再接続することなくすべてのユーザーと同じMySQLクエリを使用する

テーブルが変更されると(挿入、更新、削除など)、キャッシュは自動的に期限切れになります。 テーブルが常に変更されているので、テーブルが変更されてもキャッシュを保存できますか?または私は別の解決策を探すべきですか?しかし

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 
} 


あなたは常に各アクション例えば

後にキャッシュexpireationを置くことができ

+0

キャッシュソリューションを検討しましたか?繰り返し同じクエリを実行する – hd1

+0

は珍しいことではありません - あなたは特定の問題がありますか? mysqlはデフォルトでいくつかのキャッシングを行っています。 –

+0

さて、私はすでに私の質問に言及しましたが、私が言ったように、私のテーブルは絶えず変化しており、テーブルが更新されていればキャッシュは削除されます。 – user1852196

答えて

1

を使用するためにmemcacheのサーバーを起動し&そのような生成されたスクリプト:次に

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

それを使用する:

$results = include 'mycache.php'; 
+0

ありがとうございます。あなたの方法は私に必要なものを与えました。 – user1852196

0

あなたは常に読み取りと書き込みのデータベースを実行するのと同じ方法(関数、クラス)を使用している場合は、キャッシュを持つ目的は、データベースクエリのような高価なリソースを必要とせずにリクエストを処理することです。
非常に頻繁に更新する必要がある場合は、キャッシュの実装はそれほど役に立ちません

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

あなたはmemcacheのモジュールをコンパイルする必要があります、セットアップは、結果セットが大きすぎるではない場合、あなたにそれをキャッシュすることができmemcacheの

+0

私のテーブルは非常に頻繁に更新されているので、/私はキャッシュを使用することはできません。問題は、検出されたサーバーにのみMemcacheをインストールできることです。 – user1852196

関連する問題