ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルの is_dir、is_file、file_exists 関数のパフォーマンス分析

PHP_PHP チュートリアルの is_dir、is_file、file_exists 関数のパフォーマンス分析

WBOY
WBOYオリジナル
2016-07-13 10:44:271011ブラウズ

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回実行し、所要時間を記録します。

コードは次のとおりです

コードをコピーファイルが存在します(カレントディレクトリ) is_file:0.4570ms file_exists:2.0640ms file_exists($file) $file がディレクトリの場合、is_file は false を返し、file_exists は true を返します

ファイルは存在します(絶対パスレベル3/www/hx/a/)
is_file:0.4909ms
file_exists:3.3500ms

ファイルは存在します(絶対パスレベル5/www/hx/a/b/c/)
is_file:0.4961ms
file_exists:4.2100ms

ファイルが存在しません(カレントディレクトリ)
is_file:2.0170ms
file_exists:1.9848ms

ファイルが存在しません(絶対パスレベル5/www/hx/a/b/c/)
is_file:4.1909ms
file_exists:4.1502ms

ディレクトリが存在します
file_exists:2.9271ms
is_dir:0.4601ms

ディレクトリが存在しません

file_exists:2.9719ms
is_dir:2.9359ms



is_file($file)


ファイルが存在する場合、is_file は file_exists よりもはるかに高速です。 ファイルを検出するディレクトリが深いほど速度の差は大きくなりますが、少なくとも 4 倍は速くなります。

ファイルが存在しない場合、is_file は file_exists よりも少し遅くなりますが、無視しても問題ありません。


ディレクトリが存在する場合、is_dir は file_exists よりもはるかに高速です;
ディレクトリが存在しない場合、is_dir は file_exists よりも少し遅くなりますが、無視しても問題ありません。

結論:

ファイルが存在するかどうかを確認したい場合は、関数 is_file() を使用します。 ディレクトリが存在するかどうかを確認したい場合は、関数 is_dir(),

を使用します。 file_exists を使用する場所がないようです。渡されたパラメータがファイルなのかディレクトリなのかが不明な場合に使用されますか?




http://www.bkjia.com/PHPjc/633102.htmlwww.bkjia.com

tru​​e

技術記事 PHP の is_dir、is_file、file_exists 関数のパフォーマンス分析を各メソッドの特定の場所でまとめました。必要な学生は参照してください。 is_dir、is_fi... in PHP
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。