我计划在我的大学为我的朋友们创建一个小聊天室。 由于我不想投入任何资金,我将使用一个免费的主机,它不允许我安装IRC服务器。我也喜欢使用ajax和PHP,因为我已经了解它们。
自我刷新的ajax和PHP页面是个好主意吗?像每一秒一样,ajax触发一个PHP脚本,它返回最新的,比如说聊天历史记录中有20个MySQL条目。
当用户写东西时,它会被插入到MySQL数据库中,正如您可能已经想到的那样。
这是个好主意吗?
您对保存邮件有任何其他想法吗?比MySQL更优化的东西?
或任何完全不同的想法可以达到我的目的?
提前致谢!
安迪:)
答案 0 :(得分:2)
如果使用内存表,可以节省大量的硬盘速度,并且你需要选择正确的索引。
示例DB结构:
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服务器)
答案 1 :(得分:2)
也许免费主机应该有错误的数据库。所以,如果你不断访问它,你的聊天会非常慢(除非聊天不会被大量使用)。
无论如何,您可以使用一些免费选项(而不是自己开发):
以下是一些示例教程:
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/
问候!
答案 2 :(得分:1)
这是一个非常典型的基本聊天室方法,对我来说似乎很好。我唯一建议的是为每个聊天记录分配一个自动增量ID,这样你的ajax就可以跟踪它收到的最新消息。这样,如果最后收到的消息的ID为100,则ajax可以请求ID为101或更高的项目。然后你只是提取新消息,它们只能被附加到聊天窗口,而不是刷新整个页面。
答案 3 :(得分:0)
你为什么要再次发电?正如你所说:
或任何完全不同的想法可以达到我的目的?
有很多聊天室,为什么你不使用它们?
无论如何从编程角度来看,如果你打算建立一个小聊天室,你的想法似乎很好。但随着用户增加,您将面临服务器上的过载,并可能导致免费主机崩溃。