Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1486 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete mysql spéciale pour créer un chat

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

requete mysql spéciale pour créer un chat

n°1659846
nicobzz
Posté le 18-12-2007 à 12:25:41  profilanswer
 

bonjour, voila mon problème, je souhaite créer un chat pour mon site web, et j'ai besoin d'un moyen q'un processus php soit informé du changement d'une donnée par un autre processus php (la donnée étant le message à envoyer par le chat), la donnée peut par exemple être mise dans la base de donnée mysql.
Ma question est donc, connaissez vous un moyen avec mysql de mettre un processus php en attente jusqu'a ce que une donnée dans la base de donnée ait été changé par un autre processus php, ou bien faut t'il relancer un requete régulièrement pour voir si la donnée à changer.
Voila, merci si vous pouvez me donner une réponse
 
a plus

mood
Publicité
Posté le 18-12-2007 à 12:25:41  profilanswer
 

n°1659850
flo850
moi je
Posté le 18-12-2007 à 12:28:21  profilanswer
 

le plus simple est que le processus php interrroge la base régulièrement


---------------

n°1659871
nicobzz
Posté le 18-12-2007 à 12:59:29  profilanswer
 

bien merci, j'ai peur que ça mange un peu de charge, car y'a bcp de monde sur le serveur, enfin je verrais bien et puis je pourrais diminuer la fréquence à laquelle j'interroge la base, merci enocre

n°1659887
sircam
I Like Trains
Posté le 18-12-2007 à 13:25:22  profilanswer
 

Tu as deux process PHP? Etrange, mais bon, IPC ou une communication socket-based pourrait réduire la charge.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1659895
nicobzz
Posté le 18-12-2007 à 13:35:31  profilanswer
 

ben en fait il y'a un processus qui est appelé par la page du chat pour recevoir les messages envoyé, c'est celui ci qui est en attente, et l'autre processus est appelé lorsque qu'un autre utilisateur veut envoyer un message et c'est celui la qui change la base de donnée, c'est vrai que je pourrait faire ça avec ipc(je savais pas que c'était disponible sur php), mais comme ça a l'air un peu compliqué pour l'instant je reste sur mysql,merci

n°1659900
sircam
I Like Trains
Posté le 18-12-2007 à 13:40:29  profilanswer
 

C'est assez curieux, en PHP. J'ai l'habitude de manipuler threads et processes, mais en PHP, je suis perplexe.
 
Par curiosité, tu peux m'en dire plus? "Il est en attente" comment? Pq deux process?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1659907
nicobzz
Posté le 18-12-2007 à 13:48:18  profilanswer
 

en fait le premier est en attente simplement par une fonction proche de celle la :
while(1){
sleep(5);
verifier que y'ai un message sur la base de donnée, si oui on sort de la boucle;
sinon on continue la boucle;
}
 
voila et l'autre processus met la base de donnée à jour.
enfin j'utilise le mot processus car j'ai l'habitude de ce mot sous linux mais je sais pas si c'est bien adapté pour php!

n°1659939
omega2
Posté le 18-12-2007 à 14:34:31  profilanswer
 

nicobzz a écrit :

en fait le premier est en attente simplement par une fonction proche de celle la :
while(1){
sleep(5);
verifier que y'ai un message sur la base de donnée, si oui on sort de la boucle;
sinon on continue la boucle;
}
 
voila et l'autre processus met la base de donnée à jour.
enfin j'utilise le mot processus car j'ai l'habitude de ce mot sous linux mais je sais pas si c'est bien adapté pour php!

Les scripts php étant tué au bout de n secondes (généralement 30) ton idée est la meilleure façon pour obtenir un beau message d'erreur au lieu d'une belle page entière.
A noter aussi que les navigateurs aussi ont un timeout qui fait que s'ils ne reçoivent rien pendant x secondes, ils affichent une page d'erreur à la place de la page normale.
Enfin même si ton idée permet d'économiser de la bande passante, tu perdrais au niveau de la charge serveur ce qui n'est pas forcément mieux.
 
 
En pratique, il n'y a que deux solutions qui soit mieux qu'un rafraichissement régulier avec appel d'un script php à chaque rafraichissement :
1) avoir un serveur web capable de prévenir chaque navigateur qu'une mise à jour vient d'avoir lieu. Personnellement je n'ai jamais croisé un seul site web qui utilise cette possibilité et c'est une solution qui pose des problèmes (potentiel) de sécurité : qui dit que le message reçu par le navigateur vient bien du serveur qui héberge le site web et non pas d'un ordinateur sur internet qui se fait passer pour lui.
2) utiliser des programmes clients (java ou flash par exemple) qu'on affiche dans la fenêtre du navigateur et qui se connecteront au serveur de manière continu (sans déconnection entre chaque appel). Evidemment, le serveur ne doit pas couper les liaisons donc ça exclus l'utilisation de page php accessible à travers un serveur web. En pratique, le couple qu'on retrouve le plus souvent, c'est un serveur irc et des clients irc écrit en java.

n°1659943
sircam
I Like Trains
Posté le 18-12-2007 à 14:37:10  profilanswer
 

Oui, là c'est bien un process, mais il dort un peu connement plutôt que de se réveiller sur un trigger. Tu risques d'attendre jusqu'à 5 secondes : je ne sais pas si c'est acceptable comme granularité.
 
En fait, ça ressemble un peu à une queue.
 
Mais justement, pq un process qui dort? Le deuxième process qui reçoit le message ne peut-il pas prendre directement action? Pq ce découplage?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1659947
sircam
I Like Trains
Posté le 18-12-2007 à 14:39:45  profilanswer
 

omega2 > C'est seulement possible en PHP, ce que tu proposes?
 
Un client Java, ça peut le faire, mais bon, on retombe sur du bien lourd avec connexion persistante.
 
Tout ça pour du chat?!
 
Est-ce qu'un truc ajaxoïdal ne pourrait pas faire l'affaire?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
mood
Publicité
Posté le 18-12-2007 à 14:39:45  profilanswer
 

n°1659949
sircam
I Like Trains
Posté le 18-12-2007 à 14:40:13  profilanswer
 

Autrement dit : pas sûr de bien piger la motivation de l'architecture. :-/


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1659969
nicobzz
Posté le 18-12-2007 à 14:54:36  profilanswer
 

j'avais mis un client java avec un serveur irc, mais il fait pas recette car je l'ai mis sur une page voisine et personne n'a envie de le visiter, et sinon pour le temps auquel le script php est tué, j'y ai pensé, et le script PHP sarrete automatiquement avant un temps que je détermine,sinon j'utilise de l'ajax pour faire les requetes, et apparement il attend indefiniment la page sans mettre de message d'erreur, le flash ça serait bien car je pourrais le mettre dans la page d'accueil mais le soucis c'est de trouver un truc flash gratuit qui fait chat et le java n'étant pas tres rapide à se charger je prefere pas handicaper les jeux qui ne veulent pas discuter sur le chat
voila donc bon solution un peu crad peut etre mais je pense quelle devrait marcher bien au final, et puis j'ai pas trouvé mieu

n°1659980
nicobzz
Posté le 18-12-2007 à 15:07:43  profilanswer
 

et je vous rassure le temps d'attente n'est pas de 5 sec au debut mais de 1 sec

n°1660001
omega2
Posté le 18-12-2007 à 15:25:34  profilanswer
 

nicobzz > Pour le flash, le problème, c'est que ça rame quand c'est mal fait. Je le vois souvent sur certains site où les pubs prennent jusqu'à 80% de mon processeur. Evidemment, il existe des programmes en flash qui sont bien réalisé et qui ne pompent pas beaucoup de processeur.
 
Pour un chat en php, par expérience je peux t'affirmer qu'en pratique les gens préfèrent attendre 10 secondes au chargement que d'avoir l'impression que le chat saccade et cette impression, ils finiront par l'avoir à moins que le chat en php reste quasiment désert. Même si tu ne t'en rends pas compte quand tu le développes, ça devient vraiment visible quand du monde discute. Côté vitesse de rafraichissement, pour te donner une idée, un rafraichissement toutes les secondes équivaut en moyenne à 2.5 secondes de retard dans l'affichage d'un message (la seconde de rafraichissement + 1/2 seconde en moyenne qui correspond au moment où l'autre a posté un message + 1/2 seconde pour le temps que le serveur reçoive un message après qu'on ai appuyé sur "valider" + 1/2 seconde le temps que ton navigateur demande au serveur où en est la discussion et reçoive la réponse). Si vous êtes 2 ou 3 vous ne vous rendrez peut être pas compte du problème (vous aurez juste l'impression que l'autre tape pas vite) mais si vous êtes 15 ou 20 à discuter activement là vous aurez droit à un affichage des messages par lots (plusieurs d'un coup) et le problème se sentira.
 
En fait, contrairement à toi, je n'ai jamais trouvé mieux qu'un chat en java pour mettre un chat sur un site web (et je te dis ça alors que mon premier site dynamique était un chat en php+html). Reste ton problème du "personne n'y va par ce qu'il est sur une autre page", je peux t'affirmer que le problème sera exactement le même que ton chat soit fait en java, en flash, en php+html+javascript ou dans un autre langage. Si tu veux éviter ce problème là, alors il faut que tu te tournes vers les "shootbox" (zone de texte qui sert à afficher les x derniers messages) qui est le plus proche de ce que tu as l'air de chercher (du moins c'est l'impression que j'ai) mais tu peux alors dire adieux à la liste des personnes vraiment connecté (et pas juste passé même si plus là).


Message édité par omega2 le 18-12-2007 à 15:26:45
n°1660129
nicobzz
Posté le 18-12-2007 à 17:34:30  profilanswer
 

ben en fait ce que j'avais oublié de préciser c'est que ce n'est pas un chat mais un instant messanger plutot et que je veux le mettre dans la page d'accueil, ce que je ne peux pas me permettre avec un chat java, c'est un site assez fréquenté , site de l'assoc d'une fac de médecine ou y'a ptere 4000 élèves, et j'ai pas envie de leur faire peur en mettant un chat en java qui va demander au gens inexperimenter d'installer une machine virtuelle java
en fait je veux que ça reste léger pour l'utilisateur.

n°1660138
nicobzz
Posté le 18-12-2007 à 17:39:05  profilanswer
 

on a deja un truc sur le site qui liste les derniers message du forum, je sais pas si c'est cela que tu appelles un shootbox?

n°1660162
Taz
bisounours-codeur
Posté le 18-12-2007 à 18:13:29  profilanswer
 

installe phpfreechat et voila

n°1660165
omega2
Posté le 18-12-2007 à 18:16:25  profilanswer
 

Une shootbox, généralement, c'est une zone de saisie + une zone d'affichage où les messages sont affiché. Un peu comme un chat hyper minimaliste qui ne se contente que d'afficher ce qui est saisie sans rien faire de plus (et en général, c'est sans rafraichissement auto)
 
nicobzz > Finalement, t'as besoin de quoi? D'un chat qui ne fait que des sessions privés ou d'une messagerie privé sur les forums (on envoie le message et l'autre le lira quand il passera et qu'il veut bien le lire) ?

n°1660167
omega2
Posté le 18-12-2007 à 18:20:55  profilanswer
 

Taz a écrit :

installe phpfreechat et voila

:whistle:  
J'ai testé leur démo. Avec firefox, c'est super lent au démarrage (lui qui ne voulait pas perdre 10 secondes, il va être servi) et avec IE7 c'est la cata complet : navigateur figé. Pour IE7, je l'ai tué au bout de deux minutes pour m'en dépêtrer.
De plus il veut ça pour un site sur lequel il pourrait y avoir beaucoup de monde à la fois. Un chat qui stoque les messages dans un fichier est le meilleur moyen soit d'en perdre quelques un de temps en temps soit de ramer quand du monde parle (en fonction de si on utilise ou non des verrous sur les fichiers).

Message cité 1 fois
Message édité par omega2 le 18-12-2007 à 18:34:33
n°1660175
nicobzz
Posté le 18-12-2007 à 18:32:01  profilanswer
 

une messagerie instantanée, c'est à dire que quand quelqu'un ecrit un message destiné à une autre personne, l'autre personne si elle est connecté recoit tout de suite message (comme msn mais juste pour le site), en fait vu qu'on se connait de vue dans la fac, ça permettrais de se retrouver sur le site de la fac et de creer des liens,donc php freechat ça doit faire l'affaire en le bidouillant un peu pour le transformer en messenger, mais mon programme est deja en bonne voie et presque terminé, j'ai plus que quelques reglages à faire, et à demander à lautre admin de l'integrer dans les pages principales, jespere que ça va pas trop faire ramer, mais c'est pas grave si mon prog marche mal car il ya quand meme un chat java/irc sur le site donc si les gens veulent que ça soit fluide ils iront sur le vrai chat.
en tout cas merci pour les conseils

n°1660177
omega2
Posté le 18-12-2007 à 18:36:13  profilanswer
 

ok, ben bonne chance alors, je vous souhaites qu'il marche bien.

n°1660185
Taz
bisounours-codeur
Posté le 18-12-2007 à 18:56:55  profilanswer
 

omega2 a écrit :

:whistle:  
J'ai testé leur démo. Avec firefox, c'est super lent au démarrage (lui qui ne voulait pas perdre 10 secondes, il va être servi) et avec IE7 c'est la cata complet : navigateur figé. Pour IE7, je l'ai tué au bout de deux minutes pour m'en dépêtrer.
De plus il veut ça pour un site sur lequel il pourrait y avoir beaucoup de monde à la fois. Un chat qui stoque les messages dans un fichier est le meilleur moyen soit d'en perdre quelques un de temps en temps soit de ramer quand du monde parle (en fonction de si on utilise ou non des verrous sur les fichiers).


ça charge instantanément chez moi sur FF.
 
Sinon ton truc ça s'appelle IRC ...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  requete mysql spéciale pour créer un chat

 

Sujets relatifs
Problème encodage mySQL : � et ?[Sql,Sybase,perl]Requête Sql sybase pour script perl
Comment créer jeu flash?PHP et MySQL
[resolu]Boucles sur des requetes MySQLPHP :Récupération d'une donnée à l'aide d'une requête
Page dynamique ne s'affiche pas php/mysql/easyphprequete utilisant LIKE %%
[php] requête base de donnéeAide pour une requete
Plus de sujets relatifs à : requete mysql spéciale pour créer un chat


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR