Necesito verificar si un archivo está en el disco duro en una ubicación específica ($ ruta. $ Nombre_archivo).
¿Cuál es la diferencia entre is_file()
y file_exists()
funciones y que es mejor / más rápido para su uso en PHP?
is_file()
volverá false
si la ruta indicada apunta a un directorio. file_exists()
volverá true
si la ruta indicada apunta a un archivo o directorio válido . Entonces dependería completamente de tus necesidades. Si desea saber específicamente si es un archivo o no, use is_file()
. De lo contrario, utilice file_exists()
.
is_file()
es el más rápido, pero el índice de referencia reciente muestra quefile_exists()
es un poco más rápido para mí. Entonces supongo que depende del servidor.Mi punto de referencia de prueba:
Editar: @Tivie gracias por el comentario. Se 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: movió clearstatcache (); dentro del bucle. Gracias CJ Dennis.
fuente
is_file()
más rápido quefile_exists()
. Si sabe que es un archivo (y no un directorio), definitivamente utilícelo en su lugar.is_dir()
resulta ser un 20% más rápido quefile_exists()
(lo cual no es así, por cierto), puede ser una diferencia importante si solo está buscando directorios de todos modos ...Ninguno.
is_file () puede devolver verdadero si el archivo no existe.
file_exists () puede devolver verdadero si el archivo es un directorio.
Entonces, si necesita ser un archivo y debe existir, entonces necesita ambos.
La velocidad no importa aquí porque no son lo mismo. Use solo una si solo una función importa y será más rápida.
fuente
Sé que esta publicación es antigua, pero la diferencia entre estas funciones no es solo su comportamiento. Si usa is_file () para verificar la existencia de un archivo grande, más de 2 Go. Te sorprenderás. El archivo no existe. :( Pero si verifica con file_exists (), eso funciona.
fuente
is_file
sería más rápido si lo uso con barra invertida:\is_file
. En este caso, PHP proporcionará optimización opcache y tampoco lofile_exists
hará.fuente