0

ソーシャル ネットワーキング Web サイトの管理コンソールを設計しました。私の上司は、これらの結果を構築するいくつかの MySQL クエリの結果を (24 時間) キャッシュするように求めています。このサイトでは、Memcached (Wordpress W3 の合計キャッシュを使用) と XCache を使用しています。これを行うための最良の方法を知りたかったのです。

これは、そのようなクエリの 1 つの例と、結果を取得する方法です (基本的に、ユーザーの集計統計を返します。つまり、結果はかなり単純です。たとえば、次のようになります。

//users who registered in last 365 days
$users_reg_365 = "select ID
from wp_users
where user_registered > NOW() - interval 365 day";

次に、wpdb クエリ クラスを使用して結果を取得します。

$users_reg_365 = $wpdb->get_results($users_reg_365);

次に、結果をダッシュ​​ボードに表示します。

<li><?php echo "Total users who registered within last 365 days: <span class='sqlresult'>" . sizeof($users_reg_365) . "</span>"; ?></li>

Memcached/XCache についての私の理解では、基本的に文字列を格納するので、sizeof($users_reg_365) だけをキャッシュするのは理にかなっていますか?

最後の問題は、私たちの Wordpress サイトが Memcached を活用する W3 トータル キャッシュを使用していることです。上司は私に Memcached ではなく XCache を使用するように求めましたが、ドキュメントが少しわかりにくいと感じました。この問題を解決する最善の方法は何ですか? このような特定のクエリを「記憶」するように SQL 自体に指示できますか、それともメモリ キャッシングが適しているのでしょうか。

ありがとう!

4

3 に答える 3

1

両方の違いの詳細については、こちらを参照してください: Memcache、APC、XCache、および私が聞いたことのない他の代替手段の違い

あなたができる方法の例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

// cache 24hrs
$cache_expire = 86400;


// users is your key
$users_reg_365 = $m->get('users_reg_365');
if (empty($users_reg_365)) {
    $users_reg_365 = "select ID from wp_users where user_registered > NOW() - interval 365 day";
    $m->set('users_reg_365', $cache_expire);
}

深夜に正確にキャッシュを更新する必要がある場合は、$cache_expire の値を変更してください。

http://www.php.net/manual/en/memcached.get.phpで memcached の完全なリファレンスを参照でき ます。

于 2012-11-16T02:18:27.650 に答える
0

うーん。WordPress 内でキャッシュがどのように構成されているかわかりません。永続キャッシュに Memcache(d)/XCache を使用するように WordPress のオブジェクト キャッシュを設定している場合は、次のようにすることができます。

$key = 'custom-key-to-look-up-later';
$data = sizeof( $users_reg_365 );
$group = 'group-id';
$expire = 60 * 60 * 24 // time in seconds before expiring the cache.

wp_cache_set( $key, $data, $group, $expire );

後で、次のようにその値を調べることができます

$data = wp_cache_get( $key, $group );

if( ! is_wp_error( $data ) )
    // the data is good. do something with it.

これらの関数に関するドキュメントはこちらにあります。

ただし、開始する前に、WordPress が Memcache(d) または XCache で動作するように設定されていることを確認してください。:)

于 2012-11-16T02:21:41.657 に答える