ajax-PHP-MySQL 是聊天室应用的好组合吗?

Posted

技术标签:

【中文标题】ajax-PHP-MySQL 是聊天室应用的好组合吗?【英文标题】:is ajax-PHP-MySQL a good combination for a chat room app? 【发布时间】:2011-11-24 14:16:23 【问题描述】:

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

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

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

这是个好主意吗?

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

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

提前致谢! 安迪:)

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

【问题讨论】:

【参考方案1】:

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

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

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/

问候!

【讨论】:

嘿,谢谢!但是,我还是想自己开发!...现在就是这个想法,我也可以将它用作我可以编码的演示,我以后需要它。 我想我只是爱上了jquery! XD 酷,那就继续吧!这些教程可以帮助您进行开发:)【参考方案2】:

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

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

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

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

【讨论】:

是的,我知道那里有很多免费的,但我的想法是自己编写代码,从上到下。以后在大学里我会需要它,因为我需要证明我可以编码,创建一个个人项目,而且聊天室在无聊的课程中确实缺乏...... :) 无论如何,谢谢! :D 干杯!【参考方案3】:

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

【讨论】:

是的,谢谢你的想法!这是一个很好的优化方法!欣赏它! :D【参考方案4】:

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

示例数据库结构:

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

【讨论】:

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

以上是关于ajax-PHP-MySQL 是聊天室应用的好组合吗?的主要内容,如果未能解决你的问题,请参考以下文章

聊天应用程序:node.js 还是 APE?

对“组合者”的好解释(非数学家)

有点掩蔽问题的好方法是什么?

详解使用nodejs+Socket打造P2P实时聊天室

开发简单的序列号生成器/验证器的好方法是啥?

聊天应用程序:成功重新连接到 WebSocket 服务器后该怎么办?