2011-09-25 72 views
1

我计划在我的大学为我的朋友创建一个小型聊天室。 因为我不想投资任何资金,我会使用一个免费的主机,它不允许我安装IRC服务器。我也喜欢使用ajax和PHP,因为我已经知道它们。是ajax-PHP-MySQL的聊天室应用程序的一个很好的组合?

是一个自我刷新的ajax和PHP页面的好主意吗?像每秒一样,ajax触发一个返回最新的PHP脚本,假设聊天记录中有20个MySQL条目。

当用户写入内容时,它会插入到MySQL DB中,因为您可能已经想清楚了。

这是个好主意吗?

您是否有任何其他想法来保存消息?比MySQL更优化的东西?

或者任何完全不同的想法可以实现我的目的?

在此先感谢!
andy :)

编辑:什么是更好的:MySQL数据库或文本文件? (文本文件是由jQuery优先选择,为什么?)

回答

2

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

实例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服务器)

+0

非常感谢!我会尽量优化我的数据库! :) –

1

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

+0

是的,谢谢你的想法!这是一个很棒的优化方法!欣赏它! :D –

0

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

或者任何完全不同的想法,可以实现我的目的?

有很多聊天室,你为什么不使用它们?

无论从编程的角度来看,如果你打算做小聊天室,你的想法看起来不错。但随着用户增加,您将面临服务器上的超载,并可能导致免费主机崩溃。

+0

是的,我知道这里有很多免费的,但想法是自己编码,从上到下。我将在大学后期需要它,因为我需要证明我可以编写代码,创建个人项目,聊天室中的聊天室真的很缺乏...... :)谢谢! :D干杯! –

2

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

不管怎么说,有你可以用你的目的(,而不是由你自己发展)一些免费的选择:

http://www.phpfreechat.net/

http://www.phpopenchat.org/

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

这里有一些t utorials举例:

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/

商祺!

+0

嘿,谢谢!但是我仍然想要自己开发它......现在就是这个想法,我也可以将它用作可以编码的演示,稍后我将需要它。 –

+0

我想我只是爱上了jquery! XD –

+0

酷,所以继续吧!教程可以帮助你开发你的东西:) –