如何构建PHP / MySQL实时聊天?

时间:2011-01-05 09:28:21

标签: php mysql

我想学习如何从头开始制作其中一个系统,我在Google上发现了很多垃圾链接。我真的只想要一个简单的教程来进行最基本的PHP和MySQL聊天,这样我才能在开始搞乱jQuery / AJAX之前理解这个概念。

5 个答案:

答案 0 :(得分:6)

PHP / MySQL聊天101:

1)用户打开browser
2)用户在浏览器中输入address 3)浏览器发送HTTP请求
4)server接收HTTP请求
5)服务器告诉PHP解释器运行PHP script
6)PHP脚本connectsMySQL database
7)PHP脚本retrieves list of messages
8)PHP生成由带有消息和form的HTML代码组成的HTTP响应 9)服务器向浏览器发送HTTP响应
10)浏览器从HTTP响应中绘制HTML 11)用户键入新消息并提交表单
12)浏览器发送HTTP POST请求
13)......

答案 1 :(得分:3)

聊天的实时部分是棘手的部分,如果你刚开始我会跳过它。 首先构建一个简单的留言簿,然后添加更多功能。

有很多关于如何构建留言簿的教程,甚至还有一些可以学习的免费脚本。

在您的留言簿工作后,您可以使用AJAX轮询添加自动加载新消息等功能,使其显示为实时。您基本上做的是定期对服务器进行AJAX调用,以获取所有消息并将其显示在您的页面上。

答案 2 :(得分:3)

在这里找到非常有趣的教程

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

答案 3 :(得分:2)

一个非常简单的起点

拥有消息的数据库表

id | user | timestamp | message

并有一个PHP页面发送AJAX请求以读取任何新消息。

这将涉及检查数据库以查看自收到请求以来是否有任何消息。如果没有消息,则循环,等待并在100ms内再次尝试(或者您认为可接受的任何延迟)。

当Ajax请求返回消息(JSON响应最好)时,使用JQuery将用户,时间和消息输出到页面。

答案 4 :(得分:0)

如果你必须使用php和mySQL进行聊天,至少有一个未读消息的单独表。如果您进行轮询,则很可能需要每隔100ms左右检查数据库中是否有新消息。如果您的总消息表是1000行,则每100毫秒检查一次将终止您的服务器(特别是如果连接了许多用户)。我会用my表构建mySQL数据库,只读取未读消息,并在读取后将它们移动到更大的表中以查找旧消息。这样你就不会一直检查一张大桌子。

更好的是使用缓存数据库来处理未读消息,例如redis(facebook使用memcacheD)。

甚至更好的是不要一起使用php并使用带有回调的事件驱动语言,如node.js