ホームページ  >  記事  >  バックエンド開発  >  discuz で memcache キャッシュを使用する手順

discuz で memcache キャッシュを使用する手順

PHPz
PHPzオリジナル
2017-03-12 10:57:463609ブラウズ

discuzさまざまなキャッシュを使用できます。ここではデータ キャッシュについてのみ説明します。 discuz は redis、memcache、その他のキャッシュ方法をサポートしています。/config/config_global.php で設定するだけで、環境がサポートしている場合に使用できます。

実際、キャッシュの読み書きは比較的簡単です:

require_once libfile('function/cache'); //加载缓存类  
  
savecache($cachename, $data); //写缓存  
  
loadcache($cachename); //读缓存,将缓存写到$_G变量中,通过读取$_G['cache']来获取缓存数据。

その中で、savecache()は設定されたキャッシュ(memcacheredisxpcなど)にデータを書き込みます。そしてキャッシュを common_syscache テーブルに記録します。

loadcache() を使用する場合、キャッシュを取得するために table_common_syscache クラスの fetch_all メソッドが呼び出されます。

1. メモリ キャッシュが設定されているかどうかを確認します。データが存在する場合は直接返されます。メモリ キャッシュが設定されていない場合は、ステップ 2 に進みます。

2. 次に、ファイル キャッシュが設定されているかどうかを確認します。設定されている場合は、データをキャッシュします。データが存在しない場合、またはファイル キャッシュが設定されていない場合は、そのデータが返されます。ステップ3に進みます。

3.

common_syscache テーブルのデータを読み取り、それを返します。 (したがって、キャッシュをクリアするときは、これらの側面を考慮する必要があります)

重要なのは、グローバル->パフォーマンスの最適化->メモリの最適化で、いくつかの設定の最適化を行うことができます。また、メモリ キャッシュ管理で直接キャッシュをクリアすることもできます。ただし、カスタマイズされたキャッシュの場合は、キャッシュをクリアする独自の関数を開発する必要があります。私の環境では、memcache キャッシュがオンになっており、システムの組み込みのmemory() 関数を使用してキャッシュをクリアしていますが、loadcache() を使用してデータを読み取ると、キャッシュがまだ存在していることがわかります。その理由は、memory() は memcache データをクリアできますが、commmom_syscache テーブルはクリアしないため、loadcache() が使用されるときにテーブルがまだ存在するためです。後で調べたところ、deletegroupcache() 関数が見つかりました。全体的な状況に適応するために、/source/function/function_core.php に deletecache() 関数を単純に書きました。コードは次のとおりです:

function deletecache($cachenames) {  
    if(!empty($cachenames)) {  
        C::t('common_syscache')->delete($cachenames);  
    }  
}


以上がdiscuz で memcache キャッシュを使用する手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。