PHP中is_file,file_existsの違い、is_fileはfileの代わりにできませんexitsの理由
is_fileはファイルが存在するか否かを判断し、指定したファイル名が正常なファイルであるか否かを検査する.
file_existsはファイルが存在するか、ディレクトリが存在するかを判断する.
is_dirはディレクトリが存在するかどうかを判断する.
マニュアルを見て、この2つの関数の結果はキャッシュされますが、is_fileはN倍速くなった.
もう一つ注意すべきことは
ファイルが存在する場合、is_file比file_existsはN倍速い.
ファイルが存在しない場合、is_file比file_existsは遅いです.
結論はfile_exits関数は、ファイルが本当に存在するかどうかで速度に影響を与えるわけではありませんが、is_fileの影響が大きくなります.
まず最初に質問するのは、is_fileは本当にfileの代わりになりますexistsは使いますか?答えは否定的だ.どうして?理由は簡単だfileにキャッシュがある
次のコードを使用してテストできます.
テストコードを実行するときはtestを確認します.txtファイルが存在します.上のコードでは、is_を初めて使用します.file関数はファイルが存在するかどうかを判断し、sleep関数を呼び出して10秒間スリープします.この10秒以内にtestをtxtファイル削除.最後に2回目の呼び出しis_を見てみましょうfile関数の結果.出力結果は次のとおりです.
test.txt exists!
test.txt exists!
ええ、あなたは間違っていません.2回とも「test.txt exists!」と出力しています.これはなぜですか.理由はis_fileにキャッシュがあります.最初の呼び出しis_file関数の場合、PHPはファイルのプロパティ(file stat)を保存し、is_を再度呼び出すfileの場合、ファイル名が最初と同じであれば、キャッシュに直接戻ります.
ではis_fileをfile_に変更existsは?上のコードのisをfile関数をfile_に変更exists関数は、上記のテスト方法を再使用してテストします.結果は次のとおりです.
test.txt exists!
test.txt no exists!
2回目の呼び出しfile_existsのときに返されるファイルは存在しません.これはfile_exists関数はキャッシュされず、fileを呼び出さなかった.existsの場合、ディスクに行ってファイルが存在するかどうかを検索するので、falseは2回目に返されます.
あんなにたくさん言ったのに、私はただis_を説明したいだけです.fileはfileの代わりにできませんexistsは、isを無理に感じている場合に使用します.fileの性能がいいなら、私にも仕方がない.
file_existsはファイルが存在するか、ディレクトリが存在するかを判断する.
is_dirはディレクトリが存在するかどうかを判断する.
マニュアルを見て、この2つの関数の結果はキャッシュされますが、is_fileはN倍速くなった.
もう一つ注意すべきことは
ファイルが存在する場合、is_file比file_existsはN倍速い.
ファイルが存在しない場合、is_file比file_existsは遅いです.
結論はfile_exits関数は、ファイルが本当に存在するかどうかで速度に影響を与えるわけではありませんが、is_fileの影響が大きくなります.
まず最初に質問するのは、is_fileは本当にfileの代わりになりますexistsは使いますか?答えは否定的だ.どうして?理由は簡単だfileにキャッシュがある
次のコードを使用してテストできます.
$filename = 'test.txt';
if (is_file($filename)) {
echo "$filename exists!
";
} else {
echo "$filename no exists!
";
}
sleep(10);
if (is_file($filename)) {
echo "$filename exists!
";
} else {
echo "$filename no exists!
";
}
?>
テストコードを実行するときはtestを確認します.txtファイルが存在します.上のコードでは、is_を初めて使用します.file関数はファイルが存在するかどうかを判断し、sleep関数を呼び出して10秒間スリープします.この10秒以内にtestをtxtファイル削除.最後に2回目の呼び出しis_を見てみましょうfile関数の結果.出力結果は次のとおりです.
test.txt exists!
test.txt exists!
ええ、あなたは間違っていません.2回とも「test.txt exists!」と出力しています.これはなぜですか.理由はis_fileにキャッシュがあります.最初の呼び出しis_file関数の場合、PHPはファイルのプロパティ(file stat)を保存し、is_を再度呼び出すfileの場合、ファイル名が最初と同じであれば、キャッシュに直接戻ります.
ではis_fileをfile_に変更existsは?上のコードのisをfile関数をfile_に変更exists関数は、上記のテスト方法を再使用してテストします.結果は次のとおりです.
test.txt exists!
test.txt no exists!
2回目の呼び出しfile_existsのときに返されるファイルは存在しません.これはfile_exists関数はキャッシュされず、fileを呼び出さなかった.existsの場合、ディスクに行ってファイルが存在するかどうかを検索するので、falseは2回目に返されます.
あんなにたくさん言ったのに、私はただis_を説明したいだけです.fileはfileの代わりにできませんexistsは、isを無理に感じている場合に使用します.fileの性能がいいなら、私にも仕方がない.