現在の位置: ホーム> 最新記事一覧> RealPath_Cache_SizeとRealPath_Cache_Getの使用に関する詳細な説明

RealPath_Cache_SizeとRealPath_Cache_Getの使用に関する詳細な説明

gitbox 2025-05-29

PHP開発では、 RealPath()関数は非常に一般的に使用されるパス解像度関数です。パフォーマンスを改善するために、PHPは「RealPathキャッシュ」と呼ばれるRealPath()呼び出しの結果をキャッシュします。このキャッシュを管理および表示するための2つの重要な機能は、 RealPath_Cache_SizeRealPath_Cache_Getです。この記事では、これら2つの機能の間に関数と違いを紹介し、共同使用に関するいくつかの実用的なヒントを共有します。

1。realpath_cache_size関数

RealPath_Cache_Size()は、現在のRealPathキャッシュで使用されるメモリサイズ(バイト単位)を返す非常に直感的な関数です。

使用例:

 <?php
echo realpath_cache_size();
?>

この関数はパラメーターを受け入れず、戻り値は整数であり、現在のRealPathキャッシュの総フットプリントを示しています。

2。realpath_cache_get関数

RealPath_Cache_Size()とは異なり、 RealPath_Cache_Get()関数は、ディレクトリ、有効期限など、パスの実際のアドレスなど、キャッシュ内のすべてのパスの詳細情報を含む、キャッシュの実際のコンテンツを返します。

使用例:

 <?php
print_r(realpath_cache_get());
?>

返品値は連想配列であり、配列のキーはキャッシュのパスであり、値は次のフィールドを含む配列です。

  • キー:キャッシュアイテムの一意の識別子(通常はパス)

  • IS_DIR :それはディレクトリですか

  • RealPath :リアルパス

  • 期限切れ:キャッシュされた有効期限(タイムスタンプ)

 Array
(
    [/var/www/html/index.php] => Array
        (
            [key] => /var/www/html/index.php
            [is_dir] => 
            [realpath] => /var/www/html/index.php
            [expires] => 1716626500
        )
)

3。2つの違い

特性realpath_cache_size realpath_cache_get
効果キャッシュサイズを返しますキャッシュされたコンテンツに戻ります
戻り値タイプ整数連想配列
パラメーターなしなし
典型的な用途パフォーマンス監視/メモリの最適化キャッシュされたコンテンツをデバッグします

RealPath_cache_size()は、主にパフォーマンス監視またはメモリ使用量の分析に使用されますが、 RealPath_cache_get()は、パス解像度とキャッシュの問題のデバッグにより適しています。

4。共同使用のためのヒント

1.キャッシュ成長の傾向を分析します

開発中、 RealPath_Cache_Size()によって返される値が絶えず増加していることに気付いた場合、 RealPath_Cache_Get()を組み合わせて、どのパスがキャッシュされているかを確認できます。次のスクリプトを使用して定期的に監視してください。

 <?php
echo "Cache size: " . realpath_cache_size() . " bytes\n";
print_r(realpath_cache_get());
?>

出力を比較することにより、不必要なパスが頻繁に解析され、キャッシュに追加されるかどうかを分析します。

2。RealPath_Cache_Size構成を最適化します

php.iniでは、 realpath_cache_sizeはデフォルトで16kです。大規模なプロジェクトでは、この値が小さすぎる可能性があり、キャッシュヒット率が低下します。次のコードを使用して、この値を拡張する必要があるかどうかを判断できます。

 <?php
$cache = realpath_cache_get();
$used = realpath_cache_size();

if ($used > 15000) {
    echo "追加することをお勧めしますrealpath_cache_sizeの値,現在使用されています {$used} バイト\n";
}
?>

3.パスキャッシュの例外を見つけます

RefsInclude 、またはFile_Existsを使用してパス解像度の問題を発生させる場合、指定されたパスがキャッシュにあるかどうか、およびCacheがRealPath_Cache_Get()を介して切断されたかどうかを直接確認できます。例えば:

 <?php
$path = '/var/www/html/config.php';
$cache = realpath_cache_get();

if (isset($cache[$path])) {
    echo "このパスはキャッシュされています:\n";
    print_r($cache[$path]);
} else {
    echo "パスはキャッシュされたり期限切れになっていません\n";
}
?>

この方法は、従来のデバッグ方法よりも効率的で有益です。

V.実用的な提案

  • 高い並行性シナリオでは、 RealPath_Cache_Sizeの値を適切に増やすと、ファイルシステムのIO操作を効果的に削減できます。

  • ロギングでRealPath_Cache_Get()を使用して、フレームワークまたは大規模プロジェクトのパス解像度の動作を監視および最適化します。

  • RealPath_Cache_Get()は、PHPの内部キャッシュのスナップショットを返すことに注意してください。パフォーマンスは、SAPIが異なる場合(CLIやFPMなど)異なる場合があります。

6。概要

realpath_cache_size()およびrealpath_cache_get()は、PHPパスキャッシングを管理するための2つの強力なツールです。前者はキャッシュの容量に焦点を当て、後者はキャッシュの特定の内容を明らかにします。 2つを一緒に使用することにより、特に大規模なコードベースまたはフレームワークを調整する場合、PHPプロジェクトでパス解像度の動作をより完全に理解し、最適化できます。

公式ドキュメントにさらに読むことができます。

 <?php
echo file_get_contents('https://www.gitbox.net/manual/en/function.realpath-cache-size.php');
?>

これらの2つの機能を適切に使用すると、より効率的で制御可能なPHPアプリケーションシステムの構築に役立ちます。