Page 1 sur 2
Problème de script avec DOMXML
Posté : 30 août 2006, 08:36
par Nathaire
Bonjour à toutes et tous!
je suis perdu aider moi

!
Je suis actuellement sur le développement d'un site possèdant des news et comme le mandateurs adore le XML, je lui ai fait un site en XML. Différents fichiers font office de base de données et contiennent les infos, dont les news.
Mon problème est le suivant : lorsque j'exécute le code suivant :
Code : Tout sélectionner
$lastID = getLastNewsId();
if ($lastID<0){
echo "<div class='newsDiv'>no news actually</div>";
}
else{
echo getNews($lastID,$crtLang);
}
il met énormément de temps à afficher la page. Alors que si je lui donne
par exemple, il va très vite. Je me suis dit que le problème était la fonction:
Code : Tout sélectionner
function getLastNewsId(){
global $xpath_news;
$nb = getNbOfElement("/NewsRoot/news",$xpath_news);
return ($nb-1);
}
function getNbOfElement($xpathString, $xpath){
$nodeList = $xpath->query($xpathString);
return $nodeList->length;
}
mais en mettant des echo date("m:s") dans les fonctions, tout les temps sont à la secondes prêt identiques...
Est-ce que quelquûn aurait une idée??
Posté : 02 sept. 2006, 19:55
par Tuzz
tu as essayé de mettre un echo time(); avant et après ta premiere ligne tu obtiens quoi ?
si c'est pas ça, ça veut dire que la comparaison est longue, ça peut peut être un problème de type, essaie de coller un gettype à ton $lastId
Posté : 04 sept. 2006, 08:41
par Nathaire
J'ai bien essayé de mettre un date("m:s") et j'obtient la même minute et la même seconde!!
Posté : 04 sept. 2006, 10:00
par naholyr
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

Posté : 04 sept. 2006, 12:34
par Invité
J'ai essayé et j'ai toujours le même temps au chiffre près!
Je doit dire que là je necomprend plus du tout se qui se passe, surtout qu'en local je n'ai aucun problème...
Posté : 04 sept. 2006, 20:57
par Tuzz
donc c'est l'affichage qui prend du temps l'execution n'a aucun bleme ?
Posté : 05 sept. 2006, 10:45
par Nathaire
A première vue oui, mais si je fixe le $lastID à 4 par exemple, l'affichage est instantanné! Donc je ne sais pas trop où est le problème...
Posté : 05 sept. 2006, 10:48
par zeus
Est-ce que tu peux nous donner le résultats de l'exécution du code donné par Naholyr ?
Posté : 07 sept. 2006, 13:45
par Nathaire
Bein voilà...
1157629407<hr />1157629407<hr />
--------------------------
Text de ma news
--------------------------
1157629407<hr />
...
Posté : 07 sept. 2006, 14:01
par naholyr
ça c'est quand tu le fixes à 4 ou dans l'autre cas ?
Posté : 13 sept. 2006, 08:23
par Nathaire
Posté : 13 sept. 2006, 08:29
par naholyr
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

Posté : 15 sept. 2006, 11:30
par Nathaire

J'ai vraiment l'air d'être aussi bête que ça?
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...

Posté : 15 sept. 2006, 11:54
par zeus
Quel est le code de getNews() ?
Posté : 15 sept. 2006, 12:04
par sadeq
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;
}