discuz でのデータ キャッシュの使用

WBOY
リリース: 2016-08-08 09:30:50
オリジナル
1453 人が閲覧しました

私は数日間 discuz のキャッシュをいじっていましたが、効率が非常に低いため、いくつかの手がかりが得られました。2333333~~~~

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

実際、キャッシュの読み取りと書き込みは比較的単純です。コードは次のとおりです。

require_once libfile('function/cache'); //加载缓存类

savecache($cachename, $data); //写缓存

loadcache('plugin_fahao_kflist'); //读缓存,将缓存写到$_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 でのデータ キャッシュの使用方法を紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート