2011-01-05 4 views
3

Je veux apprendre comment faire un de ces systèmes à partir de zéro et je trouve beaucoup de liens indésirables sur Google. Je veux juste un simple tutoriel pour le chat PHP et MySQL le plus basique afin que je puisse comprendre le concept avant de commencer à jouer avec jQuery/AJAX.Comment puis-je créer un chat en direct PHP/MySQL?

+2

Je pense que cette question est un peu vague - peut-être si vous focalisé un peu plus sur le particulier aspect qui vous préoccupe aiderait. Vous ne dites pas quel est votre niveau d'expertise avec PHP, la conception de base de données etc, donc quel niveau de tutoriel recherchez-vous? – Polsonby

+1

cadres + 'meta-refresh' était le chemin avant l'ère AJAX –

+0

Quelle vague question. Vous pourriez avoir plus de chance si vous demandez de l'aide sur une partie spécifique de votre projet, plutôt que de simplement demander un enseignement sur l'ensemble. –

Répondre

2

Un point de départ très simple

avoir une table de base de données pour un message

id | user | timestamp | message 

Et une page PHP qui envoie une requête AJAX pour lire les nouveaux messages.

Cela impliquera de vérifier la base de données pour voir s'il y a des messages depuis le moment où la demande a été reçue. Si aucun message, puis boucle, attendez et essayez à nouveau dans 100ms (ou tout ce que vous pensez est décalage acceptable). Lorsque la requête Ajax renvoie un message (une réponse JSON serait la meilleure), affichez l'utilisateur, l'heure et le message sur la page en utilisant JQuery.

+0

Je viens d'écrire ma première application ajax, donc encore très nouvelle à ce sujet. Est-il acceptable de faire des sondages à partir du navigateur? Cela ne provoquera-t-il pas une utilisation élevée du processeur, etc.? – zaidwaqi

+0

Vous pouvez effectuer un sondage à partir du navigateur et laisser le serveur faire une boucle jusqu'à ce qu'un nouveau message soit trouvé, puis renvoyer une réponse. C'est ce qu'on appelle une longue interrogation, et c'est l'une des rares façons de contourner le besoin de sockets en programmation web – Codemwnci

+0

intéressant ... merci, surtout pour le mot-clé – zaidwaqi

3

La partie live de votre discussion est la partie la plus difficile, si vous commencez juste je passerais cela. Commencez par créer un simple livre d'or, puis ajoutez plus de fonctionnalités.

Il existe de nombreux tutoriels sur la façon de créer un livre d'or, et même quelques scripts gratuits dont vous pouvez apprendre. Une fois que votre livre d'or a fonctionné, vous pouvez ajouter des fonctionnalités telles que le chargement automatique de nouveaux messages pour le faire apparaître comme vivant, en utilisant l'interrogation AJAX. Qu'est-ce que vous faites essentiellement faire un appel AJAX au serveur à intervalles réguliers pour obtenir tous les messages et l'afficher sur votre page.

+0

Mais qu'en est-il de la partie opérateur? Il doit y avoir un opérateur (admin) pour gérer les messages des clients entrants et y répondre, non? Donc, si je comprends bien, le script côté admin va continuer à vérifier les dernières entrées dans la base de données (à intervalles réguliers, disons toutes les 10 secondes, en utilisant ajax) et montrer à l'admin, les détails du message et le client correspondant. Ainsi, l'administrateur peut sélectionner le client et lui envoyer une réponse. Ensuite, à la fin du client, nous devons montrer les messages ciblés sur ce client (à intervalles réguliers). –

6

PHP/MySQL Chat 101:

1) utilisateur ouvre un browser
2) utilisateur entre address dans brower
3) navigateur envoie HTTP demande
4) server reçoit HTTP demande
5) serveur dit à l'interpréteur PHP de s'exécuter PHP script
6) Script PHP connects à MySQL database
7) Script PHP retrieves list of messages
8) PHP génère une réponse HTTP en code HTML avec des messages et form
9) Le serveur envoie une réponse HTTP au navigateur
10) Navigateur tire HTML de réponse HTTP
11) Types d'utilisateurs nouveau message et soumet le formulaire
12) envoyer navigateur requête HTTP POST
13) ...

3

Trouvé tutoriel très intéressant ici

http://tutorialzine.com/2010/10/ajax-web-chat-php-mysql/

+1

Bien que cela puisse théoriquement répondre à la question, [il serait préférable] (http://meta.stackexchange.com/q/8259) d'inclure les parties essentielles de la réponse ici, et de fournir le lien pour référence. –

0

Si vous devez utiliser php et mySQL for chat, ayez au moins une table séparée pour les messages non lus. Si vous interrogez vous aurez probablement besoin de vérifier la base de données pour les nouveaux messages toutes les 100ms ou plus. Si votre table de message total est de 1000 lignes, la vérification toutes les 100ms va tuer votre serveur (surtout si de nombreux utilisateurs sont connectés).Je structurerais ma base de données mySQL avec une table pour seulement les messages non lus et les déplacerais à une plus grande table pour de vieux messages une fois lus. De cette façon, vous ne vérifiez pas une grande table tout le temps.

Encore mieux est d'utiliser une base de données de cache pour les messages non lus comme redis (facebook utilisé memcacheD).

Même encore mieux est de tout simplement pas utiliser php tous ensemble et utiliser un événement avec la langue conduit comme callbacks Node.js

Questions connexes