J'ai besoin de vérifier si un fichier est sur le disque dur à un emplacement spécifié ($chemin.$file_name).
Quelle est la différence entre is_file()
et file_exists()
fonctions et qui est mieux/rapide à utiliser en PHP?
J'ai besoin de vérifier si un fichier est sur le disque dur à un emplacement spécifié ($chemin.$file_name).
Quelle est la différence entre is_file()
et file_exists()
fonctions et qui est mieux/rapide à utiliser en PHP?
is_file()
sera de retour false
si le chemin pointe vers un répertoire. file_exists()
sera de retour true
si le chemin pointe vers un fichier valide ou répertoire. Donc, il serait dépendent entièrement de vos besoins. Si vous voulez savoir précisément si c'est un fichier ou pas, utilisez is_file()
. Sinon, utilisez file_exists()
.
is_file()
est le plus rapide, mais de récentes référence montre qu' file_exists()
est légèrement plus rapide pour moi. Donc je suppose que cela dépend du serveur.
Mon test de référence:
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";
}
Edit: @Tivie merci pour le commentaire. Changé le nombre de cycles de 1000 à 10k. Le résultat est:
lorsque le fichier existe:
is_file x 10000 1.5651218891144 secondes
file_exists x 10000 1.5016479492188 secondes
is_readable x 10000 3.7882499694824 secondes
lorsque le fichier n'existe pas:
is_file x 10000 0.23920488357544 secondes
file_exists x 10000 0.22103786468506 secondes
is_readable x 10000 0.21929788589478 secondes
Edit: déplacé clearstatcache(); à l'intérieur de la boucle. Merci CJ Dennis.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.