Preciso verificar se um arquivo está no HDD em um local especificado ($ path. $ File_name).
Qual é a diferença entre is_file()
e file_exists()
funções e que é melhor / mais rápido para uso em PHP?
is_file()
retornará false
se o caminho fornecido apontar para um diretório. file_exists()
retornará true
se o caminho fornecido apontar para um arquivo ou diretório válido . Portanto, dependeria inteiramente de suas necessidades. Se você quiser saber especificamente se é um arquivo ou não, use is_file()
. Caso contrário, use file_exists()
.
is_file()
é o mais rápido, mas o benchmark recente mostra quefile_exists()
é um pouco mais rápido para mim. Então eu acho que depende do servidor.Meu benchmark de teste:
Edit: @Tivie obrigado pelo comentário. Número alterado de ciclos de 1000 para 10k. O resultado é:
quando o arquivo existir :
is_file x 10000 1,5651218891144 segundos
file_exists x 10000 1,5016479492188 segundos
is_readable x 10000 3,7882499694824 segundos
quando o arquivo não existe :
is_file x 10000 0,23920488357544 segundos
file_exists x 10000 0,22103786468506 segundos
is_readable x 10000 0,21929788589478 segundos
Editar: moveu o clearstatcache (); dentro do loop. Obrigado CJ Dennis.
fonte
is_file()
mais rápido do quefile_exists()
. Se você sabe que é um arquivo (e não um diretório), use-o definitivamente.is_dir()
acabar sendo 20% mais rápido do quefile_exists()
(o que não acontece, aliás), isso pode ser uma diferença importante se você estiver apenas procurando dirs de qualquer maneira ...Nem.
is_file () pode retornar verdadeiro se o arquivo não existir.
file_exists () pode retornar verdadeiro se o arquivo for um diretório.
Portanto, se ele precisa ser um arquivo e precisa existir, você precisa de ambos.
A velocidade não importa aqui porque eles não são iguais. Use apenas um se apenas uma função for importante e será mais rápido.
fonte
Sei que esse post é antigo, mas a diferença entre essas funções não está apenas no comportamento. Se você usar is_file () para verificar a existência de um arquivo grande, vá para mais de 2. Você vai se surpreender. Arquivo não existe. :( Mas se você verificar com file_exists (), isso funciona.
fonte
is_file
seria mais rápido se usá-lo com barra invertida:\is_file
. Neste caso, o PHP fornecerá otimização opcache nemfile_exists
não.fonte