ファイルが指定された場所($ path。$ file_name)のHDDにあるかどうかを確認する必要があります。
is_file()
と file_exists()
関数の違いはどれですか
is_file()
は、指定されたパスがディレクトリを指す場合、false
を返します。 file_exists()
は、指定されたパスが有効なファイルを指している場合にtrue
を返しますまたはディレクトリ。したがって、それはあなたのニーズに完全に依存します。 具体的にファイルかどうかを知りたい場合は、is_file()
を使用してください。それ以外の場合は、file_exists()
を使用します。
is_file()
が最速ですが、最近のベンチマークでは、file_exists()
が少し速いことが示されています。だから、サーバーに依存すると思います。
私のテストベンチマーク:
benchmark('is_file');
benchmark('file_exists');
benchmark('is_readable');
function benchmark($funcName) {
$numCycles = 10000;
$time_start = microtime(true);
for ($i = 0; $i < $numCycles; $i++) {
clearstatcache();
$funcName('path/to/file.php'); // or 'path/to/file.php' instead of __FILE__
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "$funcName x $numCycles $time seconds <br>\n";
}
編集:@Tivie、コメントありがとう。サイクル数を1000から10kに変更しました。結果は次のとおりです。
ファイル存在するの場合:
is_file x 10000 1.5651218891144秒
file_exists x 10000 1.5016479492188秒
is_readable x 10000 3.7882499694824秒
ファイル存在しない:の場合
is_file x 10000 0.23920488357544秒
file_exists x 10000 0.22103786468506秒
is_readable x 10000 0.21929788589478秒
編集:clearstatcache()を移動しました;ループ内。 CJデニスに感謝します。