Rafraîssement Auto PHP/AJAX

Fermé
kopps99 Messages postés 4 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 3 juin 2015 - Modifié par jordane45 le 3/06/2015 à 09:17
kopps99 Messages postés 4 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 3 juin 2015 - 3 juin 2015 à 10:18
Bonjour à tous, j'ai ici un script de PHP/Ajax qui rafraîchit une variable PHP grâce à Ajax par le rafraîchissement d'une requête et celle ci fonctionne mais le problème est que ça rame grave quand je lance ce code sur le serveur. Donc est ce que j'ai fait une erreur qui demande trop de ressources ?

Mon HTML :
<html> 

<head> 
<title>Exemple</title> 

<script type="text/javascript"> 
function ajax() 
{ 
var xhr=null; 

if (window.XMLHttpRequest) { 
xhr = new XMLHttpRequest(); 
} 
else if (window.ActiveXObject) 
{ 
xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
//on définit l'appel de la fonction au retour serveur 
xhr.onreadystatechange = function() { affichage(xhr); }; 

//on appelle le fichier reponse.txt 
xhr.open("GET", "autre.php", true); 
xhr.send(null); 
} 

function affichage(xhr) 
{ 
var docXML= xhr.responseXML; 
var items = docXML.getElementsByTagName("donnee") 
//on fait juste une boucle sur chaque element "donnee" trouvé 
for (i=0;i<items.length;i++) 
{ 
document.getElementById("bip").innerHTML = items.item(i).firstChild.data; 
var timer=setInterval(ajax, 5000); 
} 
} 

</script> 
</head> 
<body onload="javascript:ajax();"> 

<div id="bip"></div> 

</body> 
</html> 

####################################################################### 
####################################################################### 
####################################################################### 


Puis mon appel requête (autre.php) :
<?php 
header('Content-Type: text/xml'); 
echo "<?xml version=\"1.0\"?>\n"; 
echo "<exemple>\n"; 

$user="####"; 
$host="####"; 
$password="####"; 
$database="####"; 

$v = 0; 

$cxnvisit = mysqli_connect($host, $user, $password, $database) or die ("Etape 1 : Connexion impossible au serveur"); 

$sqlvisit = "SELECT * FROM visite WHERE visiteur='$var1' and visiter='$var2'"; 

$resultvisit = mysqli_query($cxnvisit,$sqlvisit) or die ("Requete en echec region"); 

while($row = mysqli_fetch_row($resultvisit)) 
{ 
$idvisite = $row[0]; 
$v = $v + 1; 
} 

echo "<donnee>" . $v . "</donnee>\n"; 

echo "</exemple>\n"; 
?> 

Ai-je fais une erreur pour que cela rame autant ?

Merci par avance


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.
A voir également:

2 réponses

jordane45 Messages postés 38243 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 octobre 2024 4 689
3 juin 2015 à 09:25
Bonjour,

Il y a plusieurs choses qui ne vont pas..
Mais déjà .. à mon avis tu n'as pas mis le timout au bon endroit.
Essayes comme ça :
function affichage(xhr) { 
 var docXML= xhr.responseXML; 
 var items = docXML.getElementsByTagName("donnee") 
 //on fait juste une boucle sur chaque element "donnee" trouvé 
 for (i=0;i<items.length;i++) { 
  document.getElementById("bip").innerHTML = items.item(i).firstChild.data; 
 }
var timer=setInterval(ajax, 5000);  
} 



Ensuite, dans ton code PHP ....
- tu utilises des variables dans ta requête... mais à aucun moment tu ne les envoies via ton ajax...
donc actuellement.... ben.. elles sont vides !

- Dans ta Base de données : As-tu beaucoup de données dedans ? Les champs de ta table sont-ils correctement indexés ? (et avant que tu ne demandes : http://www.dbnewz.com/2008/06/27/les-index-mysql-types-placements-efficacite/comment-page-1/ )


1
kopps99 Messages postés 4 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 3 juin 2015
3 juin 2015 à 09:56
Super ça va déjà mieux avec ton code. Mais ça rame toujours un peu.
Les variables de la requête ne sont en faite pas des variables mais des constantes que j'ai changé pour le post sur comment ça marche.
Dans la BDD oui j'ai pas mal de données mais rien d'extraordinaire et oui ils sont correctement indexés (tu as bien fais de mettre le lien je t'aurai demandé à coup sûr !).
Je suis sur un serveur mutualisé je pense que cela peut jouer mais à ce point ??? Je demande de faire une requête toute les 5 secondes et ça me fait ramer le site. Alors que quand je clique sur ma page principale mon code appelle une dizaine de requête en même temps et c'est rapide comme l'éclair. En fait je trouve pas cela logique. C'est pour cela que je pense avoir un code non optimisé.
0
jordane45 Messages postés 38243 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 3 octobre 2024 4 689
3 juin 2015 à 10:14
Dans l'ideal .. pou faire de l'ajax .. je te conseille d'utiliser JQUERY
La syntaxe est optimisée ... et perso je maitrise mieux que de le faire en JS pur.

Ensuite, plutôt que de générer un pseudo XML dans ton php .. tu peux utiliser l'encodage JSON.



0
kopps99 Messages postés 4 Date d'inscription mercredi 3 juin 2015 Statut Membre Dernière intervention 3 juin 2015
3 juin 2015 à 10:18
Ok merci tu saurai où je peux trouver un script Jquery qui fait cette fonction ? En fait je veux juste rafraîchir automatiquement une variable PHP qui correspont à un résultat de requête SQL. Merci en tout cas d'avoir pris du temps pour m'avoir répondu !
0