1

キャッシュ(MemCache)を使用して、自分のWebサイトに登録されているアクティブなユーザーの数を表示するにはどうすればよいでしょうか。私は現在使用しています:

    return mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `active` =    1"), 0);

また、ページが読み込まれるたびにデータベースにクエリが実行されるため、これを使用するのは適切ではありません。これは良くありません。では、「memcache」などを作成して、たとえば10分ほど後にすべてのユーザーにその番号を更新するにはどうすればよいでしょうか。

私はその方法をグーグルで検索しましたが、実際にそれをうまく行う方法を得ることができませんでした。

ありがとう!

4

1 に答える 1

3

完全なドキュメント/チュートリアルではなく、ガイドラインを提供します。

Memcached をインストールする前に、mysql_* 関数の代わりにMySQLiまたはPDOを使用する必要があります。このドキュメントの警告メッセージを確認してください。

MemcachedとそのPHP 拡張機能をインストールする必要があります。

完了したら、関数phpinfo()を呼び出して有効になっていることを確認します。Memcached が存在しない場合、インストールは失敗しています。

ここに明示的なコードスニペットがあります

$mc = new Memcached();
$mc->addServer('localhost', 11211); // add a new server to the pool

// you will want to vary this key according to the query
// if two different queries use the same key your functions will return unexpected data
$cacheKey = 'a-custom-key-that-defines-the-data-within-it';

// how long will it take for the cache to expire in seconds : an hour
$cacheLifetime = 3600; 

$data = $mc->get($cacheKey); // we get the data from cache

// check if Memcached was able to retrieve the data
if ($mc->getResultCode() === Memcached::RES_FAILURE) {
    // if for some reasons the data is not there we get it and reinject into memcached
    $data = mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `active` =    1"), 0);

    $mc->set($cacheKey, $data, $cacheLifetime); // save the data in the defined $cacheKey
}

return $data;
于 2013-03-16T05:00:10.780 に答える