次のように使用方法は以下のとおりです。
$ cache->セット($キー、$結果、Configsを::インスタンス() - > cacheDuration、新しいTagDependency([
'タグ' =>自己:: CACHE_TAG、
]));
キャッシュでの集合演算では、このパラメータは次のようになります。
保存、キャッシュに値として算出し、その後の$ this - >のsetValue($キー、$値、$時間); $値=シリアライズ([$値、$依存])です。
最も重要なのは、この前に、それ以下となります。$ dependency-> evaluateDependency($この)。
この操作は、$依存関係オブジェクトを変更するためにつながります。これにより、$キーに対応する変更値を発生します。
パブリック関数evaluateDependency($キャッシュ) { 場合(の$ this - >再利用可能){ $ハッシュ=の$ this - > generateReusableHash(); もし(array_key_exists($ハッシュ、自己:: $ _ reusableData)!){ 自己:: $ _ reusableData [$ハッシュ] =の$ this - > generateDependencyData($キャッシュ)。 } の$ this - >データ=自己:: $ _ reusableData [$ハッシュ]; } {他 の$ this - >データ=の$ this - > generateDependencyData($キャッシュ)。 } }
通常$この再利用は、デフォルトである、偽です。
の$ this - >データ=の$ this - > generateDependencyDataを($キャッシュ)の実行、オブジェクトの変更には、結果を変更された属性データ。
次のようにここでは、TagDependencyを使用し、コードは次のとおりです。
保護機能generateDependencyData($キャッシュ) { $タイムスタンプ=の$ this - > getTimestamps($キャッシュ、(アレイ)の$ this - >タグ)。 $ newKeys = []; foreachの($キー=> $タイムスタンプとして$タイムスタンプ){ (偽=== $タイムスタンプ)であれば{ $ newKeys [] = $キー。 } } もし(!空($ newKeys)){ $タイムスタンプ= array_merge($タイムスタンプ、静的:: touchKeys($キャッシュ、$ newKeys)); } $タイムスタンプを返します。 }
タイムスタンプは、すべての$のタイムスタンプが偽で取得する最初の時間のために得られます。
主に確認してください。
静的:: touchKeys($キャッシュ、$ newKeys)
コードは以下の通りであります:
保護された静的関数touchKeys($キャッシュ、$キー) { $アイテム= []; $時間=のmicrotime(); {foreachのは、($キーとして$キー) $商品[$キー] = $時間。 } $ cache->マルチセット($アイテム); $アイテムを返します。 }
ミリ秒のタイムスタンプを付与するキー、およびバルクセットのキャッシュを得ました。そして、:
保護された関数getTimestamps($キャッシュ、$タグ) { (空($タグ))であれば{ []を返します。 } $キー= []; foreachの($タグとして$タグ){ $キー[] = $ cache-> buildKey([__ CLASS__、$タグ])。 } ($キー)$ cache-> multiGetを返します。 }
キーに対応する値を得るために。
値がキャッシュまたは有効期限が切れていない場合は、対応する配列の値がfalseになります。
この文を確認するにはfalseを返しますが設定されていない場合は、先に述べました。
総単語、第四キャッシュ・セットのパラメータ、およびタイムスタンプのセットを生成し、データのTagDependencyに、そして$ cache-に割り当て> buildKey([__ CLASS__、$タグ])形成されたキーは、キーで、時間キャッシュに格納された値のためのスタンプ。変化を検出するために、このタイムスタンプを使用してください。
そしてTagDependency ::無効(Configsに::キャッシュ()、自己:: CACHE_TAG)は、時間をリセットするために使用され、キャッシュがリフレッシュ値である$ cache-> buildKey([__ CLASS__、$タグ])キーとして。