Maison > Article > développement back-end > Raisons pour lesquelles la fonction is_file() ne peut pas remplacer la fonction file_exists()
is_file peut-il vraiment remplacer file_exists ? La réponse est non. Pourquoi? La raison est très simple, is_file a cache
On peut utiliser le code suivant pour le tester :
Le code est le suivant :
<?php $filename = 'test.txt'; if (is_file($filename)) { echo "$filename exists!\n"; } else { echo "$filename no exists!\n"; } sleep(10); if (is_file($filename)) { echo "$filename exists!\n"; } else { echo "$filename no exists!\n"; } ?>
dans Lors de l'exécution du code de test, nous nous assurons que le fichier test.txt existe. Dans le code ci-dessus, la fonction is_file est utilisée pour la première fois pour déterminer si le fichier existe, puis la fonction sleep est appelée pour dormir pendant 10 secondes. Dans ces 10 secondes, nous supprimerons le fichier test.txt . Enfin, regardez le résultat de l’appel de la fonction is_file pour la deuxième fois. Le résultat de sortie est le suivant :
test.txt existe !
test.txt existe !
Eh bien, vous avez bien lu, "test.txt existe !" a été affiché deux fois. Pourquoi ? La raison est que is_file a un cache. Lorsque la fonction is_file est appelée pour la première fois, PHP enregistrera l'attribut (file stat) du fichier Lorsque is_file sera à nouveau appelé, si le nom du fichier est le même que la première fois, il le fera. être retourné directement au cache.
Que diriez-vous de changer is_file en file_exists ? Nous pouvons remplacer la fonction is_file dans le code ci-dessus par la fonction file_exists et utiliser à nouveau la méthode de test ci-dessus pour tester. Les résultats sont les suivants :
test.txt existe !
test.txt n'existe pas !
Lorsque file_exists est appelé pour la deuxième fois, il est renvoyé que le fichier n'existe pas. C'est parce que file_exists. La fonction n'est pas mise en cache et se produira à chaque fois que file_exists est appelé. Accédez au disque pour rechercher si le fichier existe, il ne renverra donc false que la deuxième fois.
Is_file ne peut donc pas être utilisé à la place de file_exists
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!