Rafraîssement Auto PHP/AJAX
kopps99
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
kopps99 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
kopps99 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
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 :
Puis mon appel requête (autre.php) :
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.
.
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:
- Rafraîssement Auto PHP/AJAX
- Easy php - Télécharger - Divers Web & Internet
- Ciel auto entrepreneur - Télécharger - Comptabilité & Facturation
- Expert php pinterest - Télécharger - Langages
- Auto clicker souris - Télécharger - Divers Utilitaires
- Camsam android auto - Télécharger - Transports & Cartes
2 réponses
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 :
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/ )
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/ )
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.
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.
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é.