working una saber not is_file is_dir file_exists existe ejemplos php file exists

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:

  1. 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

  2. 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.