Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1499 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  Parser un fichier xml volumineux sur plusieurs pages ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parser un fichier xml volumineux sur plusieurs pages ?

n°1387851
seabird
Posté le 15-06-2006 à 00:24:24  profilanswer
 

Bonjour,
 
J'ai intégré un système de pagination sur mon parser xml qui est celui-ci:
 

Code :
  1. <?php
  2. // le répertoire "cache"  
  3. $dir_cache = 'cache/';
  4. // nom du fichier mis en cache  
  5. $file_cache1 = 'flux1.html';
  6. if (!is_dir($dir_cache)) {
  7.    exit ('Répertoire cache "'.$dir_cache.'" inexistant !');
  8. }
  9.    // on impose la mise à jour avec une certaine periodicité  
  10. $date_modif1 = time();
  11.    // le delai entre deux rafraichissements en secondes  
  12.    $delai1 = 43200;
  13. // le fichier est-il en cache et suffisamment jeune  
  14. $file_cache1 = $dir_cache.$file_cache1;
  15. $en_cache1 = file_exists($file_cache1);
  16. if ($en_cache1) {
  17.    $en_cache1 = ($date_modif1 < filemtime($file_cache1) + $delai1);
  18. }
  19. if (!$en_cache1) {
  20.    // Lecture d'un fichier XML  
  21. function lit_xml1($fichier,$item,$champs) {
  22.    // on lit le fichier  
  23.    if($chaine = @implode("",@file($fichier))) {
  24.       // on explode sur <item>  
  25.       $tmp = preg_split("/<\/?".$item.">/",$chaine);
  26.    
  27.    
  28.      $nombre = sizeof($tmp);
  29.       // pour chaque <item>  
  30.       for($i=1;$i<$nombre -1;$i+=2)
  31.          // on lit les champs demandés <champ>  
  32.          foreach($champs as $champ) {
  33.             $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
  34.             // on ajoute au tableau  
  35.             $tmp3[$i-1][] = @$tmp2[1];
  36.          }
  37.       // et on retourne le tableau  
  38.       return $tmp3;
  39.    }
  40. }
  41. // Exemple :  
  42. $xml1 = lit_xml1("http://monsite.com/xml.php","item",array("title","description","link","category","url" ));
  43.       foreach($xml1 as $row1) {
  44.          
  45.      
  46.       $data1 .= '<br><table width=400 height=190 align=center cellpadding=0 cellspacing=0 bgcolor="#F8D630"  border=2>';
  47.       $data1 .= '<tr>';
  48.       $data1 .= '<td colspan=2 height=25 align=center bordercolor=#FFFFCC><a href='.$row1[2].'><font color="#000000">'.$row1[0].'</font> </a></td>';
  49.       $data1 .= '</tr>';
  50.       $data1 .= '<tr>';
  51.       $data1 .= '<td bordercolor=#FFFFCC height="136" width="133" valign="middle" align="center"><a href='.$row1[2].'><img src='.$row1[4].' border=0></a></td>';
  52.       $data1 .= '<td  bordercolor=#FFFFCC ><span class="tailledescrip" ><div style="margin-left:10px;">'.$row1[1].'</div></span></td>';
  53.       $data1 .= '</tr>';
  54.       $data1 .= '<tr>';
  55.       $data1 .= '<td colspan=2 height=25 bordercolor=#FFFFCC><p><em>catégorie :</em> '.$row1[3].' <em> </td>';
  56.       $data1 .= '</tr>';
  57.       $data1 .= '</table><br>';
  58.      
  59.      
  60.    }
  61.    
  62.    $fd1 = fopen($file_cache1, "w" );
  63.    fputs($fd1, $data1);
  64.    fclose($fd1);
  65. } // fin if !$en_cache1  
  66. include $file_cache1;
  67. ?>


 
 
 
J'ai fait plusieurs tests, tout fonctionne correctement.
Cependant j'ai un autre soucis, je viens d'essayer de parser un gros fichier xml ( 10Mo ) et forcément j'ai eu '500 Internal Server Error' , vu qu'avant d'afficher les résultats , je mets toutes les données dans un tableau qui forcément est immense.  
A votre avis comment est-ce que je pourrais faire pour ne lire qu'une partie du fichier xml puis afficher , puis lire la suite , puis afficher etc... Je pense que c'est le seul moyen de m'en sortir non ?
 
Merci

mood
Publicité
Posté le 15-06-2006 à 00:24:24  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  Parser un fichier xml volumineux sur plusieurs pages ?

 

Sujets relatifs
Récupérer contenu d'un fichier wordVB6 ouvrir un fichier
[Delphi/C++/C#]Webcam pour plusieurs applisOpenRowSet sur fichier en partage sur reseau
créer un fichier batchFichier .sh et .bat
Recuperer données SQL en fichier Excelrécupérer la date de modification d'un fichier
Acceder en VBS via ligne de cmd à un fichier excelRécupérer puis modifier des infos depuis un fichier texte
Plus de sujets relatifs à : Parser un fichier xml volumineux sur plusieurs pages ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR