chat php / ajax
12 messages
• Page 1 sur 1
- suppr_18032010
chat php / ajax
Bonjour à tous,
J'ai un probleme avec un de mes scripts pour un chat en php/ajax.
Cela fonctionne parfaitement avec firefox mais pas avec explorer : la page des messages ne se recharge pas sous IE (elle doit se recharger toutes les 200ms) ...
est ce que quelqu'un voit d'ou cela peut venir ?
Merci a tous
Xp
J'ai un probleme avec un de mes scripts pour un chat en php/ajax.
Cela fonctionne parfaitement avec firefox mais pas avec explorer : la page des messages ne se recharge pas sous IE (elle doit se recharger toutes les 200ms) ...
- Code: Tout sélectionner
...
<script type='text/JavaScript'>
var xhr = null;
var n=0;
function getXhr(){
if(window.XMLHttpRequest)xhr = new XMLHttpRequest();
else if(window.ActiveXObject){
try{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}else{
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
function init(){
loop();
}
function loop(){
//setTimeout('loop();',200);
setTimeout("mainLoop()",200);// recharge les messages
ShowPage();
}
function ShowPage(){
getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
document.getElementById('page1').innerHTML=xhr.responseText;
}
}
xhr.open("GET","loop.php",true);// page des messages
xhr.send(null);
}
</script>
</head>
<body onLoad="init()">
...
est ce que quelqu'un voit d'ou cela peut venir ?
Merci a tous
Xp
-

Dmx - WRInaute occasionnel

- Messages: 256
- Inscription: 7 Avr 2004
oui c'est là l'erreur :
xhr.open("GET","loop.php",true);// page des messages
problème de cache
IE reprends le fichier en cache, soit tu met sur ton script php un header pour indiquer au navigateur qu'il ne faut pas de cache
soit t'appelles
xhr.open("GET","loop.php?20060702171349",true);// page des messages
le numéro correspond a la date courante
(avec les milisecondes dans ton cas !)
Si ton script est au point j'en veux bien une copie, je m'en ferai un plaisir de l'améliorer et de le redistribué
xhr.open("GET","loop.php",true);// page des messages
problème de cache
soit t'appelles
xhr.open("GET","loop.php?20060702171349",true);// page des messages
le numéro correspond a la date courante
Si ton script est au point j'en veux bien une copie, je m'en ferai un plaisir de l'améliorer et de le redistribué
- suppr_18032010
merci de ta reponse...
j'avais deja essayé :
mais cela permet juste de recharger la page correctement sous IE si on rafraichi (touche F5)
cela ne recharge pas automatiquement le contenu des messages puisque le time(); est en javascript dans la page...
j'avais deja essayé :
- Code: Tout sélectionner
<script type="text/javascript" language="javascript">
var xhr = null;
var n=0;
function getXhr(){
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else if(window.ActiveXObject){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
function init(){
loop();
}
function loop(){
setTimeout('loop();',5000);
ShowPage();
}
function ShowPage(){
getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
document.getElementById('page1').innerHTML=xhr.responseText;
}
}
xhr.open("GET","loop.php?<? echo time(); ?>",true);
xhr.send(null);
}
</script>
mais cela permet juste de recharger la page correctement sous IE si on rafraichi (touche F5)
cela ne recharge pas automatiquement le contenu des messages puisque le time(); est en javascript dans la page...
- suppr_18032010
en fait DMX avait raison :
pour empecher le cache IE et ca marche... sur Firefox et IE
mon chat est un peu spécial car seul les membres (identifiés via un cookie) peuvent y accéder, sans besoin de se s'identifier une nouvelle fois
les visiteurs ne peuvent que voir les messages et doivent s'enregistrer sur le site pour participer
si ca t'interesse, je peux poster les fichiers...
- Code: Tout sélectionner
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
pour empecher le cache IE et ca marche... sur Firefox et IE
mon chat est un peu spécial car seul les membres (identifiés via un cookie) peuvent y accéder, sans besoin de se s'identifier une nouvelle fois
les visiteurs ne peuvent que voir les messages et doivent s'enregistrer sur le site pour participer
si ca t'interesse, je peux poster les fichiers...
- DaMonkey
- WRInaute discret

- Messages: 79
- Inscription: 20 Fév 2004
Salut !
Moi je te conseil juste une petite astuce pour améliorer ton script.
> dans ta boucle infinie, qui recharge ta page, pourquoi ne pas faire une requete à chaque boucle pour voir si un nouveau message a été envoyé, et dans ce cas là seulement recharger la page, plutôt que de la recharger infiniement même si aucun n'a été posté...
Tu me suis ?
Fred
Moi je te conseil juste une petite astuce pour améliorer ton script.
> dans ta boucle infinie, qui recharge ta page, pourquoi ne pas faire une requete à chaque boucle pour voir si un nouveau message a été envoyé, et dans ce cas là seulement recharger la page, plutôt que de la recharger infiniement même si aucun n'a été posté...
Tu me suis ?
Fred
- DaMonkey
- WRInaute discret

- Messages: 79
- Inscription: 20 Fév 2004
Re salut à tous,
Au fait je suis sur un projet personnel qui m'a pris comme ca pour m'occuper de développer un système de tchat IRC (sans serveur IRC bien sûr, c pour faire une comparaison) en PHP /AJAX / MYSQL qui je trouve est plutôt pas mal parti...
Dès sont avancement un peu plus poussé qu'il ne l'est maintenant, je vous posterai un exemple promis !
Au fait je bosses en PHP5 et orienté objet autant le faire savoir pour qui le PHP5 et et/ou l'orienté objet font peur
Au fait je suis sur un projet personnel qui m'a pris comme ca pour m'occuper de développer un système de tchat IRC (sans serveur IRC bien sûr, c pour faire une comparaison) en PHP /AJAX / MYSQL qui je trouve est plutôt pas mal parti...
Dès sont avancement un peu plus poussé qu'il ne l'est maintenant, je vous posterai un exemple promis !
Au fait je bosses en PHP5 et orienté objet autant le faire savoir pour qui le PHP5 et et/ou l'orienté objet font peur
- DaMonkey
- WRInaute discret

- Messages: 79
- Inscription: 20 Fév 2004
scull a écrit:Mais sa doit commencer une bande passante de fou avec php ajax non ?
En fait, c'est ca que je me dit, donc je cherche à développer (mais c'est pour la suite quand tout tourne rond) un systeme de queue... comme un daemon pour imprimante, qui met les documletn en queue pour les envoyer un par un par un...
Mais ce sera pour la suite, en tout cas je trouve que mon début est positif
Tourne avec entre autre fonction d'information quand un new user entre dans le tchat, ainsi que quand un user du tchat quitte le tchat (ferme le navigateur ou change de page) (avec mise a jouir de la liste de users connecté en même tps) en temps réel
Et ce sans aucun rafraichiessement
A suivre...
- venomelektro
- WRInaute occasionnel

- Messages: 257
- Inscription: 16 Juin 2005
plutot que de remplacer le innerhtml de tout la discution tu devrais regarder du coté de prototype.js et de l objet "insert"
new Insertion.Top('ton-div-de-chat', les_nv_msgs );
de cette manière en faisant un controle par un timestamp tu ne récupère que les nouveaux messages.
new Insertion.Top('ton-div-de-chat', les_nv_msgs );
de cette manière en faisant un controle par un timestamp tu ne récupère que les nouveaux messages.
Dernière édition par venomelektro le Mar Déc 05, 2006 13:38, édité 1 fois.
- preuter64
- Nouveau WRInaute

- Messages: 9
- Inscription: 10 Jan 2006
firefox fuite memoire
Bonjour,
j ai ecris un chat tres basique avec php / ajax qui fait une requete automatique tous les 5 secondes pour recuperer les nouveaux messages (mysql).
Tout fonctionne a priori SAUF le probleme memoire suivant :
Sous firefox (v1.5) j ai un probleme de memoire : le gestionnaire de taches processus m indique un processus qui consomme de plus en plus de memoire - et au bout de quelques heures firefox plante
Avez vous rencontré un meme probleme ?
Un extrait de mon code est ici
et puis pour l appeler :
Tout commentaire est super apprecié. J ai passé la journée pour chercher la fuite memoire et pas trouvé .... Par exemple, connaissez vous une extension firefox (a part firebug) qui me monitore la memoire utilisé (ou meme mieux : perdue ?)?
Pat
j ai ecris un chat tres basique avec php / ajax qui fait une requete automatique tous les 5 secondes pour recuperer les nouveaux messages (mysql).
Tout fonctionne a priori SAUF le probleme memoire suivant :
Sous firefox (v1.5) j ai un probleme de memoire : le gestionnaire de taches processus m indique un processus qui consomme de plus en plus de memoire - et au bout de quelques heures firefox plante
Avez vous rencontré un meme probleme ?
Un extrait de mon code est ici
- Code: Tout sélectionner
function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4)
{
return(xhr_object.responseText);
}
else
{
return(false);
}
}
et puis pour l appeler :
- Code: Tout sélectionner
function getChatText(once) {
var time = new Date();
var secs = time.getTime();
document.forms['chatForm'].elements['chatbarText'].setAttribute('autocomplete','off');
var texte;
texte = file("getchatnew.php?bidon="+secs);
xhr_object = null;
document.getElementById('chattextnew').innerHTML = (texte);
if (once ==0)
{
setTimeout('getChatText(0);',5000);
}
}
Tout commentaire est super apprecié. J ai passé la journée pour chercher la fuite memoire et pas trouvé .... Par exemple, connaissez vous une extension firefox (a part firebug) qui me monitore la memoire utilisé (ou meme mieux : perdue ?)?
Pat
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


