PHPでは、APC(代替PHPキャッシュ)は、PHPアプリケーションの実行をスピードアップするための一般的なキャッシュソリューションです。キャッシュシステムの健康を監視することは、システムのパフォーマンスと安定性を確保するために重要です。 Apcuiterator :: getTotalSizeメソッドは、キャッシュ内のすべてのデータのサイズをカウントするための簡潔な方法を提供し、開発者がタイムリーにキャッシュの使用を理解するのに役立ちます。
APCUiteratorは、キャッシュ内のトラバースエントリにAPC拡張機能によって提供されるイテレータークラスです。現在のキャッシュのすべてのマッチングエントリのバイトの総数を返すgettotalsize()メソッドがあります。キャッシュサイズを定期的に取得することにより、キャッシュが容量制限に近いかどうかを効果的に監視し、キャッシュスペースが不十分なことによって引き起こされるパフォーマンスボトルネックを回避できます。
<?php
// aを作成します APCUIterator 例,すべてのキャッシュエントリを繰り返します
$iterator = new APCUIterator('/.*/');
// キャッシュ内のすべてのエントリの合計サイズを取得します(バイト)
$totalSize = $iterator->getTotalSize();
// 将バイト转换成更友好的单位,例えば MB
$totalSizeMB = round($totalSize / 1024 / 1024, 2);
echo "現在のキャッシュサイズはです:{$totalSizeMB} MB";
?>
この例では、 APCUiterator( '/.*/')は、正規表現を介してすべてのキャッシュエントリを一致させ、 GetTotalSize()メソッドを呼び出して合計サイズを取得します。
上記のコードは、数分ごとに実行するためにキャッシュの使用を検出するなど、定期的に実行する監視スクリプトに統合できます。
<?php
$iterator = new APCUIterator('/.*/');
$totalSize = $iterator->getTotalSize();
$totalSizeMB = round($totalSize / 1024 / 1024, 2);
// キャッシュ制限が設定されていると仮定します 100MB
$thresholdMB = 100;
if ($totalSizeMB > $thresholdMB) {
// アラームメールまたはロギングを送信します
error_log("警告:キャッシュサイズはしきい値を超えています,現在のサイズはです {$totalSizeMB} MB");
}
?>
このようにして、キャッシュサイズがしきい値を超えると、操作とメンテナンスまたは開発者がそれを処理するように促すために、時間内にアラームをトリガーできます。
APC拡張バージョン
APCuiteratorは、APC拡張機能に適しています(主にPHP 5.xで使用されています)。 PHP 7以降では、 APCUを代替品として使用することをお勧めします。これには、類似したインターフェイスがあり、より安定しています。
キャッシュ容量制限
APCのキャッシュサイズは、構成パラメーターapc.shm_sizeによって決定されます。合計サイズを監視すると、キャッシュが構成容量に近いことを確認できます。
定期的なクリーニング戦略<BR> キャッシュが頻繁に容量制限に近づいていることがわかった場合は、キャッシュ戦略の最適化または容量の増加を検討する必要があります。
APCUiterator :: GetTotalsizeを使用してキャッシュサイズを監視すると、PHPアプリケーションのパフォーマンス保証を強力にサポートできます。自動化されたスクリプトと組み合わせて定期的に検出およびアラームを整えると、キャッシュボトルネックをすばやく見つけ、システムのスムーズな動作を保証するのに役立ちます。