PHP の is_dir、is_file、file_exists 関数のパフォーマンス分析 各メソッドの特定の場所での 3 つの関数の使用方法をまとめました。必要な学生は参照してください。
phpのis_dir、is_file、file_exists関数のパフォーマンス分析
php,is_dir,is_file,file_exists
明らかに file_exists は ASP の影響を受けます。ASP には fileExists だけでなく、folderExists や driverExists もあるからです。では、PHP では file_exists は何を意味するのでしょうか。
PHPのfile_exists = is_dir + is_file
ファイルが存在するかどうか、およびディレクトリが存在するかどうかを判断できます。ただし、このような包括的な関数の実行効率は非常に低く、ASP のリクエストがフォーム、取得、Cookie のいずれであるかが指定されていないのと同様に、結論は次のようになります:
◦ディレクトリが存在するかどうかを確認したい場合は、独立した関数 is_dir(directory) を使用してください
◦ファイルが存在するかどうかを確認したい場合は、独立した関数 is_file(filepath) を使用してください
-------------------------------------------------- ----------------------------------
is_file はファイルが存在するかどうかのみを決定します。
file_exists は、ファイルが存在するかどうか、またはディレクトリが存在するかどうかを決定します。
is_dir はディレクトリが存在するかどうかを判断します
マニュアルを見ると、これら 2 つの関数の結果はキャッシュされますが、is_file の方が N 倍高速です。
ファイルが存在する場合、is_file は file_exists より N 倍高速です。
ファイルが存在しない場合、is_file は file_exists よりも遅くなります。
結論としては、file_exits関数は実際にファイルが存在するかどうかで速度に影響はありませんが、is_fileの効果は大きいです
PHP の file_exists、is_file、is_dir の違いについてのこの記事を読んだ後、PHP の file_exists = is_dir + is_file であることを基本的に理解しました。
検証するプログラムを作成します:
それぞれ1000回実行し、所要時間を記録します。
コードは次のとおりです
ファイルが存在します(カレントディレクトリ) | |
ファイルは存在します(絶対パスレベル3/www/hx/a/) ファイルは存在します(絶対パスレベル5/www/hx/a/b/c/) ファイルが存在しません(カレントディレクトリ) ファイルが存在しません(絶対パスレベル5/www/hx/a/b/c/) ディレクトリが存在します
file_exists:2.9719ms |
file_exists($file)
ファイルが存在する場合、is_file は file_exists よりもはるかに高速です。
ファイルを検出するディレクトリが深いほど速度の差は大きくなりますが、少なくとも 4 倍は速くなります。
ディレクトリが存在する場合、is_dir は file_exists よりもはるかに高速です;
ディレクトリが存在しない場合、is_dir は file_exists よりも少し遅くなりますが、無視しても問題ありません。
結論:
ファイルが存在するかどうかを確認したい場合は、関数 is_file() を使用します。 ディレクトリが存在するかどうかを確認したい場合は、関数 is_dir(), を使用します。
file_exists を使用する場所がないようです。渡されたパラメータがファイルなのかディレクトリなのかが不明な場合に使用されますか?
true