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

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme avec script : XML to PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme avec script : XML to PHP

n°1176656
nycius
Ich liebe dich !
Posté le 15-08-2005 à 19:51:59  profilanswer
 

Salut
j'utilise ce script pour afficher un flux XML en php :
 

Code :
  1. function GetXMLTree ($xmldata)
  2. {
  3. ini_set ('track_errors', '0');
  4. $xmlreaderror = false;
  5. $parser = xml_parser_create ('ISO-8859-1');
  6. xml_parser_set_option ($parser, XML_OPTION_SKIP_WHITE, 1);
  7. xml_parser_set_option ($parser, XML_OPTION_CASE_FOLDING, 0);
  8. if (!xml_parse_into_struct ($parser, $xmldata, $vals, $index)) {
  9.  $xmlreaderror = true;
  10.  echo "error";
  11. }
  12. xml_parser_free ($parser);
  13. if (!$xmlreaderror) {
  14.  $result = array ();
  15.  $i = 0;
  16.  if (isset ($vals [$i]['attributes']))
  17.   foreach (array_keys ($vals [$i]['attributes']) as $attkey)
  18.   $attributes [$attkey] = $vals [$i]['attributes'][$attkey];
  19.  $result [$vals [$i]['tag']] = array_merge ($attributes, GetChildren ($vals, $i, 'open'));
  20. }
  21. ini_set ('track_errors', '0');
  22. return $result;
  23. }
  24. function GetChildren ($vals, &$i, $type)
  25. {
  26. if ($type == 'complete') {
  27.  if (isset ($vals [$i]['value']))
  28.   return ($vals [$i]['value']);
  29.  else
  30.   return '';
  31. }
  32. $children = array ();
  33. while ($vals [++$i]['type'] != 'close') {
  34.  $type = $vals [$i]['type'];
  35.  if (isset ($children [$vals [$i]['tag']])) {
  36.   if (is_array ($children [$vals [$i]['tag']])) {
  37.    $temp = array_keys ($children [$vals [$i]['tag']]);
  38.    if (is_string ($temp [0])) {
  39.     $a = $children [$vals [$i]['tag']];
  40.     unset ($children [$vals [$i]['tag']]);
  41.     $children [$vals [$i]['tag']][0] = $a;
  42.    }
  43.   } else {
  44.    $a = $children [$vals [$i]['tag']];
  45.    unset ($children [$vals [$i]['tag']]);
  46.    $children [$vals [$i]['tag']][0] = $a;
  47.   }
  48.   $children [$vals [$i]['tag']][] = GetChildren ($vals, $i, $type);
  49.  } else
  50.   $children [$vals [$i]['tag']] = GetChildren ($vals, $i, $type);
  51.  if (isset ($vals [$i]['attributes'])) {
  52.   $attributes = array ();
  53.   foreach (array_keys ($vals [$i]['attributes']) as $attkey)
  54.   $attributes [$attkey] = $vals [$i]['attributes'][$attkey];
  55.   if (isset ($children [$vals [$i]['tag']])) {
  56.    if ($children [$vals [$i]['tag']] == '') {
  57.     unset ($children [$vals [$i]['tag']]);
  58.     $children [$vals [$i]['tag']] = $attributes;
  59.    }
  60.    elseif (is_array ($children [$vals [$i]['tag']])) {
  61.     $index = count ($children [$vals [$i]['tag']]) - 1;
  62.     if ($children [$vals [$i]['tag']][$index] == '') {
  63.      unset ($children [$vals [$i]['tag']][$index]);
  64.      $children [$vals [$i]['tag']][$index] = $attributes;
  65.     }
  66.     $children [$vals [$i]['tag']][$index] = array_merge ($children [$vals [$i]['tag']][$index], $attributes);
  67.    } else {
  68.     $value = $children [$vals [$i]['tag']];
  69.     unset ($children [$vals [$i]['tag']]);
  70.     $children [$vals [$i]['tag']]['value'] = $value;
  71.     $children [$vals [$i]['tag']] = array_merge ($children [$vals [$i]['tag']], $attributes);
  72.    }
  73.   } else
  74.    $children [$vals [$i]['tag']] = $attributes;
  75.  }
  76. }
  77. return $children;
  78. }
  79. // URL du flux xml
  80. $url = "info.xml";
  81. $contents = file_get_contents($url);
  82. $data = GetXMLTree ($contents);
  83. print_r($data);


 
Celui ci marche sans probleme quand le fichier est pas trop gros
seulement si mon fichier XML fait 40mo ca ne marche pas
je lance le script mais rien; page blanche
 
si qqun peut m'aider

mood
Publicité
Posté le 15-08-2005 à 19:51:59  profilanswer
 

n°1176670
push
/dev/random
Posté le 15-08-2005 à 20:16:33  profilanswer
 

dans ton php.ini ya une limite memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)
 
peut-être que c'est ça ?

n°1176675
nycius
Ich liebe dich !
Posté le 15-08-2005 à 20:22:37  profilanswer
 

ca ne change rien
j'ai mis a 64

n°1176678
push
/dev/random
Posté le 15-08-2005 à 20:29:53  profilanswer
 

ça valait le coup d'essayer [:petrus75]
 
(t'as relançé apache je suppose ?)


Message édité par push le 15-08-2005 à 20:30:29
n°1176680
nycius
Ich liebe dich !
Posté le 15-08-2005 à 20:33:12  profilanswer
 

oui je lai relancer mais pareil

n°1176681
esox_ch
Posté le 15-08-2005 à 20:35:32  profilanswer
 

T'a essayé avec un debuggeur?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1176684
nycius
Ich liebe dich !
Posté le 15-08-2005 à 20:37:00  profilanswer
 

cest a dire ?

n°1176693
esox_ch
Posté le 15-08-2005 à 20:48:19  profilanswer
 

Prend un debuggeur PHP et regarde a quel moment ça plante ... ça revient un peu au meme que faire un echo de toutes les variables a chaque ligne ...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1176696
nycius
Ich liebe dich !
Posté le 15-08-2005 à 20:51:16  profilanswer
 

Je vois pas trop comment on fait
desolé mais jsuis pas un expert :=

n°1176698
nycius
Ich liebe dich !
Posté le 15-08-2005 à 20:53:25  profilanswer
 

c'est tres bisard
cest le meme fichier, si je met 10 items dans le XML ca marche
si jamais je le met complet (40mo) ca plante

mood
Publicité
Posté le 15-08-2005 à 20:53:25  profilanswer
 

n°1176751
esox_ch
Posté le 15-08-2005 à 23:14:03  profilanswer
 

Tu tapes "debugger php" sur google et tu lis, je crois que c'est a ta portée meme si t'es pas un expert


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1176878
nycius
Ich liebe dich !
Posté le 16-08-2005 à 10:15:30  profilanswer
 

En fait ca viendrait de la limite dexecution de PHP
celle ci est a 32M
j'ai essayé de la monter a 256M mais tj pareil
 
Ma seule solution est de découper le fichier XML en tout petit mais ca n'est pas pratique car j'aimerai recuperer ce flux pour le mettre a jour toutes les nuits
 
Si qqun a deja vu ce soucis

n°1176880
esox_ch
Posté le 16-08-2005 à 10:21:40  profilanswer
 

Et le debugger te dis quoi?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1176884
nycius
Ich liebe dich !
Posté le 16-08-2005 à 10:26:48  profilanswer
 

il me dis Fatal error ; memory etc...
 
ca vient de ce probleme


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme avec script : XML to PHP

 

Sujets relatifs
Problème de hauteur de divisionproblème de requête
récupérer du contenu XML d'une fonction PHP dans une feuille XSLT ?Comment supprimer une ligne par un script dans base de donnée Access
[PHP] Répartir des petites images sur la largeur de l'écranProbleme pour protéger une video avec un .htaccess
Comment faire pour lancer un script à une date donnée sur MYSQL???[JS/PHP] recuperation de données POST/FILES envoyées via JS vers PHP
Problème avec BBClone 
Plus de sujets relatifs à : Probleme avec script : XML to PHP


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