1

我计划为我在大学的朋友创建一个小型聊天室。因为我不想投入任何资金,所以我将使用一个不允许我安装 IRC 服务器的免费主机。我也喜欢使用 ajax 和 PHP,因为我已经知道它们。

自刷新 ajax 和 PHP 页面是个好主意吗?就像每一秒一样,ajax 触发一个 PHP 脚本,它返回最新的,比如说聊天历史中的 20 个 MySQL 条目。

当用户写东西时,它会被插入到 MySQL DB 中,你可能已经猜到了。

这是一个好主意吗?

您还有其他保存消息的想法吗?比 MySQL 更优化的东西?

或者有什么完全不同的想法可以实现我的目的?

提前致谢!
安迪:)

编辑:什么更好:MySQL DB 或文本文件?(jquery首选文本文件,为什么?)

4

4 回答 4

2

如果您使用内存表,您可以节省很多硬盘速度,并且您需要选择正确的索引。

示例数据库结构:

CREATE TABLE `chat` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `channel` varchar(16) NOT NULL,
 `user` varchar(32) NOT NULL,
 `text` varchar(255) NOT NULL,
 `private` varchar(32) DEFAULT NULL,
     PRIMARY KEY (`id`),
 KEY `private` (`private`),
 KEY `channel` (`channel`)
) ENGINE=MEMORY

我有大约 70-80 个用户在线,但服务器上没有任何负载(具有 2GHz CPU 的服务器)

于 2011-09-25T10:56:23.680 回答
2

也许免费主机应该有坏的数据库。所以,如果你不断地访问它,你的聊天会很慢(除非聊天不会被大量使用)。

无论如何,您可以将一些免费选项用于您的目的(而不是自己开发):

http://www.phpfreechat.net/

http://www.phpopenchat.org/

http://hot-things.net/blab-lite-ajax-chat

以下是一些带有示例的教程:

http://css-tricks.com/4371-jquery-php-chat/

http://www.tutorialized.com/tutorials/PHP/Chat-Systems/1

http://php.resourceindex.com/Complete_Scripts/Chat/Shoutbox/

问候!

于 2011-09-25T11:00:03.200 回答
1

这是基本聊天室的一种非常典型的方法,对我来说似乎很好。我唯一建议的是为每个聊天记录分配一个自动增量 ID,以便您的 ajax 可以跟踪它收到的最新消息。这样,如果最后收到的消息的 ID 为 100,ajax 可以请求 ID 为 101 或更高的项目。然后你只是拉新消息,它们可以被附加到聊天窗口,而不是刷新整个页面。

于 2011-09-25T10:58:32.133 回答
0

为什么要再次发明电?如你所说:

或者有什么完全不同的想法可以实现我的目的?

聊天室很多,为什么不用呢?

无论如何从编程的角度来看,如果您打算制作小型聊天室,您的想法似乎不错。但是随着用户的增加,您将面临服务器过载,并可能导致空闲主机崩溃。

于 2011-09-25T10:59:06.440 回答