seabird  | Bonjour,
   J'ai intégré un système de pagination sur mon parser xml qui est celui-ci:
  
  Code :
 - <?php
 - // le répertoire "cache"  
 - $dir_cache = 'cache/';
 - // nom du fichier mis en cache  
 - $file_cache1 = 'flux1.html';
 - if (!is_dir($dir_cache)) {
 -    exit ('Répertoire cache "'.$dir_cache.'" inexistant !');
 - }
 -    // on impose la mise à jour avec une certaine periodicité  
 - $date_modif1 = time();
 -    // le delai entre deux rafraichissements en secondes  
 -    $delai1 = 43200;
 - // le fichier est-il en cache et suffisamment jeune  
 - $file_cache1 = $dir_cache.$file_cache1;
 - $en_cache1 = file_exists($file_cache1);
 - if ($en_cache1) {
 -    $en_cache1 = ($date_modif1 < filemtime($file_cache1) + $delai1);
 - }
 - if (!$en_cache1) {
 -    // Lecture d'un fichier XML  
 - function lit_xml1($fichier,$item,$champs) {
 -    // on lit le fichier  
 -    if($chaine = @implode("",@file($fichier))) {
 -       // on explode sur <item>  
 -       $tmp = preg_split("/<\/?".$item.">/",$chaine);
 -    
 -    
 -      $nombre = sizeof($tmp);
 -       // pour chaque <item>  
 -       for($i=1;$i<$nombre -1;$i+=2)
 -          // on lit les champs demandés <champ>  
 -          foreach($champs as $champ) {
 -             $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
 -             // on ajoute au tableau  
 -             $tmp3[$i-1][] = @$tmp2[1];
 -          }
 -       // et on retourne le tableau  
 -       return $tmp3;
 -    }
 - }
 - // Exemple :  
 - $xml1 = lit_xml1("http://monsite.com/xml.php","item",array("title","description","link","category","url" ));
 -       foreach($xml1 as $row1) {
 -          
 -      
 -       $data1 .= '<br><table width=400 height=190 align=center cellpadding=0 cellspacing=0 bgcolor="#F8D630"  border=2>';
 -       $data1 .= '<tr>';
 -       $data1 .= '<td colspan=2 height=25 align=center bordercolor=#FFFFCC><a href='.$row1[2].'><font color="#000000">'.$row1[0].'</font> </a></td>';
 -       $data1 .= '</tr>';
 -       $data1 .= '<tr>';
 -       $data1 .= '<td bordercolor=#FFFFCC height="136" width="133" valign="middle" align="center"><a href='.$row1[2].'><img src='.$row1[4].' border=0></a></td>';
 -       $data1 .= '<td  bordercolor=#FFFFCC ><span class="tailledescrip" ><div style="margin-left:10px;">'.$row1[1].'</div></span></td>';
 -       $data1 .= '</tr>';
 -       $data1 .= '<tr>';
 -       $data1 .= '<td colspan=2 height=25 bordercolor=#FFFFCC><p><em>catégorie :</em> '.$row1[3].' <em> </td>';
 -       $data1 .= '</tr>';
 -       $data1 .= '</table><br>';
 -      
 -      
 -    }
 -    
 -    $fd1 = fopen($file_cache1, "w" );
 -    fputs($fd1, $data1);
 -    fclose($fd1);
 - } // fin if !$en_cache1  
 - include $file_cache1;
 - ?>
 
  |  
 
       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
     |