Bir dosyanın HDD'de belirli bir konumda ($ yol. $ Dosya_adı) olup olmadığını kontrol etmem gerekiyor.
is_file()
Ve file_exists()
işlevleri arasındaki fark nedir ve PHP'de hangisi daha iyi / daha hızlı kullanılır?
Bir dosyanın HDD'de belirli bir konumda ($ yol. $ Dosya_adı) olup olmadığını kontrol etmem gerekiyor.
is_file()
Ve file_exists()
işlevleri arasındaki fark nedir ve PHP'de hangisi daha iyi / daha hızlı kullanılır?
Yanıtlar:
is_file()
false
verilen yol bir dizini gösteriyorsa geri döner . verilen yol geçerli bir dosya veya dizini gösteriyorsa file_exists()
dönecektir . Yani tamamen ihtiyaçlarınıza bağlı olacaktır. Bunun bir dosya olup olmadığını özellikle bilmek istiyorsanız , kullanın . Aksi takdirde kullanın .true
is_file()
file_exists()
is_file()
en hızlısıdır, ancak son karşılaştırmalar bunun file_exists()
benim için biraz daha hızlı olduğunu gösteriyor . Sanırım sunucuya bağlı.
Test karşılaştırmam:
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";
}
Düzenleme: @Tivie yorum için teşekkürler. Döngü sayısı 1000'den 10k'ye değiştirildi. Sonuç:
dosya mevcut olduğunda :
is_file x 10000 1.5651218891144 saniye
file_exists x 10000 1.5016479492188 saniye
is_readable x 10000 3.7882499694824 saniye
dosya yoksa :
is_file x 10000 0.23920488357544 saniye
file_exists x 10000 0.22103786468506 saniye
is_readable x 10000 0.21929788589478 saniye
Düzen: clearstatcache () taşındı; döngünün içinde. Teşekkürler CJ Dennis.
is_file()
daha hızlı buldum file_exists()
. Bunun bir dosya olduğunu (ve bir dizin olmadığını) biliyorsanız, kesinlikle onun yerine kullanın.
is_dir()
bundan% 20 daha hızlı çıkarsa file_exists()
(ki öyle değil, btw), bu sadece yine de
Ne.
is_file () dosya yoksa true döndürebilir.
file_exists (), dosya bir dizinse true döndürebilir.
Yani bir dosya olması gerekiyorsa ve var olması gerekiyorsa ikisine de ihtiyacınız var.
Burada hız önemli değil çünkü aynı değiller. Yalnızca bir işlev önemliyse ve daha hızlı olacaksa yalnızca birini kullanın.
Bu yazının eski olduğunu biliyorum ama bu işlevler arasındaki fark sadece davranışları değil. Büyük dosyanın varlığını kontrol etmek için is_file () kullanırsanız, 2'den fazla gidin. Sürpriz olacaksın. Dosya mevcut değil. :( Ancak file_exists () ile kontrol ederseniz, bu işe yarar.