Supposons que nous avons une boucle comme celle-ci :
foreach($entries as $entry){ // supposons que cette boucle s'exécute 1000 fois
if (file_exists('/some/dir/'.$entry.'.jpg')){
echo 'le fichier existe';
}
}
Je suppose que cela doit accéder au disque dur 1000 fois et vérifier si chaque fichier existe.
Et si on faisait plutôt ceci ?
$files = scandir('/some/dir/');
foreach($entries as $entry){ // supposons que cette boucle s'exécute 1000 fois
if (in_array($entry.'.jpg', $files)){
echo 'le fichier existe';
}
}
Question 1 : Si cela accède au disque dur une seule fois, alors je pense que cela devrait être beaucoup plus rapide. Ai-je raison sur ce point ?
Cependant, que se passe-t-il si je dois vérifier les sous-répertoires pour un fichier, comme ceci :
foreach($entries as $entry){ // supposons que cette boucle s'exécute 1000 fois
if (file_exists('/some/dir/'.$entry['id'].'/'.$entry['name'].'.jpg')){
echo 'le fichier existe';
}
}
Question 2 : Si je veux appliquer la technique ci-dessus (fichiers dans un tableau) pour vérifier si les entrées existent, comment puis-je ajouter les sous-répertoires à la liste des fichiers à l'aide de la fonction scandir()
, afin de pouvoir comparer l'existence des fichiers en utilisant cette méthode ?