Problème de script avec DOMXML

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de script avec DOMXML

par Nathaire » 05 oct. 2006, 08:06

Oui, mais cette méthode est native à php 1.5, donc pas moyen de l'optimiser...

J'ai résolu mon problème en effectuant une transformation xml-xsl afin d'afficher mes news, c'est ainsi beaucoup plus rapide.

par sadeq » 21 sept. 2006, 12:34

Par déduction logique, ton problème se situe alors dans la fonction :
function getNbOfElement($xpathString, $xpath){  
  $nodeList = $xpath->query($xpathString);  
  return $nodeList->length;  
} 
et notamment dans la méthode query() de l'objet $xpath

Code : Tout sélectionner

$nodeList = $xpath->query($xpathString);
Il faut débuguer cette méthode pour trouver l'erreur ou du moins l'optimiser.

par Nathaire » 21 sept. 2006, 09:06

Ok, maintenant désactive la ligne suivante :
//echo  getNews($lastID,$crtLang);
Et si la réponse est immédiate (sans bien sûr l'affichage de la News) poste nous la fonction getNews(...)
Déjà essayer, même sans cette ligne l'affichage est horriblement long! :-(

par sadeq » 19 sept. 2006, 11:16

Ok, maintenant désactive la ligne suivante :
//echo  getNews($lastID,$crtLang);
Et si la réponse est immédiate (sans bien sûr l'affichage de la News) poste nous la fonction getNews(...)

par Nathaire » 19 sept. 2006, 08:46

Bon, tout d'abord et avant d'aller plus loin, il faut débuguer le code en affichant des éspions de variables.

tu dois afficher les variables suivantes :
...
J'obtiens ça :

Path_news:
DOMXPath Object ( )

last id: 4

Crt Lang: DE

par Nathaire » 19 sept. 2006, 08:39

Si les temps de génération de page sont si proches, le problème ne vient pas de là :? il est soit plus loin dans le code, soit carrément dans la page générée (qui est longue à s'afficher en elle-même).
Oui, je suis d'accord avec toi sur ce point, mais comment cela se fait alors que lorsque je fixe l'ID de la news à afficher l'affichage est immédiat?!?

par naholyr » 15 sept. 2006, 13:09

Si les temps de génération de page sont si proches, le problème ne vient pas de là :? il est soit plus loin dans le code, soit carrément dans la page générée (qui est longue à s'afficher en elle-même).

par sadeq » 15 sept. 2006, 12:04

Bon, tout d'abord et avant d'aller plus loin, il faut débuguer le code en affichant des éspions de variables.

tu dois afficher les variables suivantes :
$lastID = getLastNewsId();
echo "<p>last id: $lastID<p>"; 

if ($lastID<0){ 
  echo "<div class='newsDiv'>no news actually</div>"; 
} 
else{ 
echo "<p>Crt Lang: $crtLang<p>";   
echo  getNews($lastID,$crtLang); 
}
et dans tes fonctions :
function getLastNewsId(){ 
  global $xpath_news; 
  echo "<p>Path_news: <br>"; print_r($xpath_news); echo "<p>";

  $nb = getNbOfElement("/NewsRoot/news",$xpath_news);
  
  return ($nb-1); 
} 

function getNbOfElement($xpathString, $xpath){ 
  $nodeList = $xpath->query($xpathString); 
  return $nodeList->length; 
}

par zeus » 15 sept. 2006, 11:54

Quel est le code de getNews() ?

par Nathaire » 15 sept. 2006, 11:30

:shock: J'ai vraiment l'air d'être aussi bête que ça? :shock:

C'est bien ce code là que j'ai exécuté en donnant les temps. C'est pour ça que je ne comprend plus rien. Je sais bien que ce n'est pas en fixant la valeur que les temps seront intéressant. Ingénieur en informatique pas pour rien quand même... :wink:

par naholyr » 13 sept. 2006, 08:29

echo time()."<hr />";
$lastID = getLastNewsId();
echo time()."<hr />";
if ($lastID<0){
echo "<div class='newsDiv'>no news actually</div>";
}
else{
echo getNews($lastID,$crtLang);
}
echo time()."<hr />";
Dis-nous quelles sont les valeurs de time() qui ressortent :)
C'est ce code là qu'il faut exécuter pour nous donner les valeurs du time(), c'est ce code qui est lent, l'autre avec $lastID=4 ne nous intéresse pas ;)

par Nathaire » 13 sept. 2006, 08:23

A la place de

Code : Tout sélectionner

$lastID = getLastNewsId() ;
je fixe

Code : Tout sélectionner

$lastID = 4;

par naholyr » 07 sept. 2006, 14:01

ça c'est quand tu le fixes à 4 ou dans l'autre cas ?

par Nathaire » 07 sept. 2006, 13:45

Bein voilà...


1157629407<hr />1157629407<hr />
--------------------------
Text de ma news
--------------------------
1157629407<hr />


...

par zeus » 05 sept. 2006, 10:48

Est-ce que tu peux nous donner le résultats de l'exécution du code donné par Naholyr ?