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