2013-02-22 4 views
1

J'ai plusieurs millions de fichiers dans un dossier et il y a plusieurs sous-dossiers dans ce dossier chaque sous-dossier se compose de milliers de fichiers. Je suis capable de lister tous les fichiers du dossier donné en utilisant la fonction glob, mais ici, dans ce cas, comme son très haut, je reçois une erreur fatale php. taille de la mémoire autorisée épuisée essayer d'allouer plus de mémoire je sais que cela peut être fait simplement en gardant un fichier php.ini dans ce sous-dossier, mais ce que je veux exactement, c'est la liste de toutes les extensions .txt en ordre décroissant afin que le plus gros sera en haut et le plus petit fichier sera au fond mais comme je l'ai dit, il n'est pas possible de lister des millions de fichiers si juste comme mysql je peux les lister dans la page sage ou quelque chose comme les 100 premiers fichiers seront listés dans l'ordre décroissant quand je clique sur la page montrera 100-200 articles suivants mais je ne veux pas employer la base de données s'il n'y a aucune autre manière comment je peux stocker tous ces détails dans la base de données sans causer la charge lourde sur le serveur.liste des fichiers du sous-dossier question

 <?php 
     foreach (glob("files/*") as $filename) { 
     echo "uploads/" . "$filename" . "\n</br>"; 
    } 
    ?> 

Répondre

0

utilisez opendir insteed de glob();

Essayez quelque chose comme ceci:

function printdirs($path) { 
if ($handle = opendir($path)) { 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != "..") { 
      if(is_dir($path.'/'.$entry)) 
       printdirs($path.'/'.$entry); 
      else 
      echo $path . "/" . $entry . "\n</br>"; 
     } 
    } 
    closedir($handle); 
}} 

printdirs('uploads'); 
+1

s'il vous plaît dire comment puis-je atteindre mon objectif – wayenjoy

+0

S'il vous plaît élargir votre réponse quelques-uns. – MikeSmithDev

+0

@MikeSmithDev vous obtenez ce que je voulais faire – wayenjoy