<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$step</span></span><span> = </span><span><span class="hljs-number">1</span></span><span> )
</span></span>
:キャッシュキーは、キャッシュアイテムを削減することを示します。
$ステップ:減少の値、デフォルトは1になります。 0より大きい整数を指定して、キャッシュの数値を減らすことができます。
関数は、指定されたステップサイズから指定されたキーの値を差し引くことです。キーが存在しない場合、またはキャッシュの値を整数に変換できない場合、関数はfalseを返します。
最も基本的な使用法は、キャッシュの指定されたキーから特定の値を差し引くことです。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 初期値を設定します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_store</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
</span><span><span class="hljs-comment">// この値を減らします</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-comment">// 更新された値を取得します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">apcu_fetch</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>); </span><span><span class="hljs-comment">// 出力 8</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>この例では、まず、カウンターのキーを持つ10の値がAPCU_STOREを介して保存され、値は2からAPCU_DECを差し引き、最後に8の更新値がAPCU_FETCHを介して取得されます。
ステップサイズが指定されていない場合、 APCU_DECはデフォルトで値を1で減算します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 初期値を設定します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_store</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>);
</span><span><span class="hljs-comment">// デフォルトのステップサイズの削減</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>);
</span><span><span class="hljs-comment">// 更新された値を取得します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">apcu_fetch</span></span><span>(</span><span><span class="hljs-string">'counter'</span></span><span>); </span><span><span class="hljs-comment">// 出力 9</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>この例では、 APCU_DEC(「カウンター」)はカウンター値を1だけ減らし、9になります。
APCU_DECが存在しないキャッシュキーを減らしようとすると、関数はfalseを返します。例えば:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 存在しないキーを減らすようにしてください</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span>(</span><span><span class="hljs-string">'nonexistent_key'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-comment">// 出力返回值</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 出力 bool(false)</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>これは、キーがキャッシュにない場合、 APCU_DECが新しいキー値ペアを作成しないことを示しています。既存のキーでのみ動作できます。
キャッシュの値が整数でない場合、 APCU_DECもfalseを返します。これは、キャッシュされた値が文字列または他のタイプである場合、関数が数としてそれを減らすことができないことを意味します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 非数値を設定します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">apcu_store</span></span><span>(</span><span><span class="hljs-string">'message'</span></span><span>, </span><span><span class="hljs-string">'Hello, World!'</span></span><span>);
</span><span><span class="hljs-comment">// 減らすようにしてください</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">apcu_dec</span></span><span>(</span><span><span class="hljs-string">'message'</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-comment">// 出力返回值</span></span><span>
</span><span><span class="hljs-title function_ invoke__">var_dump</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>); </span><span><span class="hljs-comment">// 出力 bool(false)</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>この場合、キャッシュの値が数ではないため、 APCU_DECはfalseを返します。
APCU_DEC関数は通常、キャッシュ内の値を動的に更新する必要があるシナリオで使用されます。例えば:
カウンター: APCU_DECは、特定のカウンターの値を記録する必要がある場合、キャッシュの数値を非常に効率的に減らすことができ、複数のリクエストでカウントを減らしたいと考えています。
現在の制限メカニズム:現在の制限シナリオでは、 APCU_DECを使用して、残りのリクエスト数を減らすことができます。たとえば、APIインターフェイスでは1日に100個の呼び出しが許可されており、 APCU_DECを使用して残りの回数を減らすことができます。
APCUキャッシュの持続性:APCUキャッシュはメモリ内のデータであり、PHPの再起動後に保持されません。したがって、 APCU_DEC操作のデータは失われます。データのストレージを維持する必要がある場合は、データベースなどの他のストレージソリューションを検討する必要があります。
同時アクセス:APCUは、単一のプロセスで共有されるキャッシュです。アプリケーションが複数のプロセスまたはサーバー間で実行されている場合、APCUの代わりに他のより分散したキャッシュスキーム(RedisやMemcachedなど)の使用を検討することをお勧めします。
パフォーマンスの考慮事項:APCUは効率的なメモリキャッシュですが、メモリキャッシュに過度に依存すると、パフォーマンスボトルネックにつながる可能性があります。したがって、キャッシュされたデータの過剰または不必要なキャッシュを避けるために、合理的にキャッシュを使用することが非常に重要です。
APCU_DECは、開発者がキャッシュの値を減らすのに役立つAPCU拡張機能の非常に実用的な機能です。カウンター、現在の制限、その他のシナリオに幅広いアプリケーションがあります。この関数の使用を理解し、習得することは、PHPプログラムのパフォーマンスを改善し、キャッシュされたデータ効率を処理するために非常に重要です。