una - is_file o file_exists en PHP
php file_exists (2)
Necesito verificar si un archivo está en HDD en una ubicación especificada ($ path. $ File_name).
¿Cuál es la diferencia entre las is_file()
y file_exists()
y cuál es mejor / más rápida de usar en PHP?
is_file()
devolverá false
si la ruta determinada apunta a un directorio. file_exists()
devolverá true
si la ruta determinada apunta a un archivo o directorio válido. Entonces dependerá completamente de tus necesidades. Si desea saber específicamente si se trata de un archivo o no, use is_file()
. De lo contrario, use file_exists()
.
is_file()
es el más rápido, pero el benchmark reciente muestra que file_exists()
es un poco más rápido para mí. Así que supongo que depende del servidor.
Mi punto de referencia de prueba:
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";
}
Editar: @Tivie gracias por el comentario. Cambió el número de ciclos de 1000 a 10k. El resultado es:
cuando el archivo existe :
is_file x 10000 1.5651218891144 segundos
file_exists x 10000 1.5016479492188 segundos
is_readable x 10000 3.7882499694824 segundos
cuando el archivo no existe :
is_file x 10000 0.23920488357544 segundos
file_exists x 10000 0.22103786468506 segundos
is_readable x 10000 0.21929788589478 segundos
Editar: movido clearstatcache (); dentro del bucle Gracias CJ Dennis.