Actualiser page que si la bdd est modifiée

brute Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   -  
adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

voici mon problème :
- j'ai une base de données MySql
- j'ai une page Php.

Je voudrais que, uniquement lorsque ma base de données est modifiée, ma page Php soit actualisée (mais sans recharger complètement => donc Ajax je pense).

Merci

A voir également:

9 réponses

prosthetiks Messages postés 1189 Date d'inscription   Statut Membre Dernière intervention   431
 
Hello,

J'ai jamais testé mais ca semble pas mal: http://www.zeitoun.net/articles/comet_and_php/start

Faudra voir côté perfs =)

un peu de doc: https://en.wikipedia.org/wiki/Push_technology
3
brute Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   13
 
Alors merci tout d'abord.
J'ai testé leur première demo (celle qui actualise le timestamp à chaque fois que celui-ci change => toutes les secondes). Elle marche très bien. J'ai donc essayé de compléter ce code pour l'intégrer à mon site : il faut que ça aille sur la bdd mysql pour prendre des infos. Seulement, là, dès que je mets mysql_connect(....), il plante et il n'affiche même plus le timestamp !

Je vous conseille de tester cette démo et d'essayer de se connecter à la bdd....

Merci
0
adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   153
 
La technologie push est ce dont tu as besoin. je te conseil de te documenter dessus
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Salut !

Oui, je pense que tu vas avoir besoin de AJAX.

Mais que je comprenne : est-ce que c'est un site où plusieurs personnes pourront se connecter en même temps, et dès que l'une d'elles va changer quelque chose, ça devra recharger la page de tous les autres qui sont en ligne ?
1
brute Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   13
 
up :)
1
avion-f16 Messages postés 19254 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Salut,

Tu ne peux pas envoyer un signal du serveur vers le client.
Il va donc falloir que le client contacte le serveur à intervale régulière.

Pour ça, tu auras besoin de setInterval.
En premier argument, tu passeras une fonction anonyme faisant la requête AJAX.

Pour le format d'échange (XML, text ou JSON) et le traitement, je ne saurais pas t'en dire plus sans détails supplémentaires.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
brute Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   13
 
coeus : oui c'est exactement ca : plusieurs personnes sont connectees en meme tps et lorsque l'une d'entre elles modifie quelque chose, toutes les personnes voient la page modifiée mais sans recharger la page completement.

avion-f16 : j'ai déja testé ca !! mais il me mettait une erreur comme trop de connexions !!
0
avion-f16 Messages postés 19254 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Alors augmente le temps.
Trois secondes, par exemple, donc 3000 millisecondes :
setInterval(function() {
    // Requête + Traitement AJAX
}, 3000);
0
brute Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   13
 
ouai mais meme !! ca m'affiche trop de connexions !! :'( mais je vais essayé d'optimiser mon script pour qu'il y ait moins de requetes !!
je vous recontacte si besoin est ^^
merci encore
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Malheureusement je connais mal ce genre de fonctionnalité... Ça dépasse un peu mes capacités. Mais il doit y avoir un moyen... Le setInterval vaut peut-être la peine de l'essayer encore, le problème de trop de connexions se situe peut-être ailleurs.

Combien de gens penses-tu avoir en même temps sur ton site, à l'heure de pointe ?

Et peux-tu nous donner le message d'erreur exact que tu reçois quand tu essaies cette méthode ?
0
coeus Messages postés 3021 Date d'inscription   Statut Membre Dernière intervention   119
 
Je viens de penser à quelque chose...

Supposons que, chaque fois qu'une modification est apportée à la BDD, tu conserves un timestamp quelque part disant à quel moment ç'a été fait. Et de l'autre côté, chez le client, tu crées un cookie ou une variable SESSION, qui contient le timestamp du dernier refresh pour cet utilisateur. Le setInterval servirait à détecter si le timestamp dans la BDD est plus "grand" (ou plus récent) que celui de l'utilisateur, et si c'est le cas, alors seulement il fait la mise à jour.

Ça va réduire le nombre de requêtes en général... Quoiqu'il va toujours falloir gérer la situation dans les moments où tout le monde va se mettre à jour en même temps...

À moins que tu aies déjà un mécanisme semblable ?
Idée comme ça...
0
avion-f16 Messages postés 19254 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
C'est le système souvent utilisé pour éviter de rafraichir tout, mais seulement récupérer les nouveautés.
Mais ça ne réduit pas le nombre de connexion (HTTP et MySQL), ni le nombre de requête SQL.
0
brute Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   13
 
merci a vous !!
mais il faut quand meme faire un setinterval pour savoir si timestamp est plus grand !!! donc ca change rien....
0
Freedomsoul Messages postés 509 Date d'inscription   Statut Membre Dernière intervention   97
 
et le header refresh ? (php)
0
avion-f16 Messages postés 19254 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Refresh sert à actualiser la page entièrement.
0
brute Messages postés 112 Date d'inscription   Statut Membre Dernière intervention   13
 
oui ce n'est pas ce qu'il me faut... merci quand meme :)
0