goo*_*ing 11 php mysql jquery chat
有1对1在线聊天.两种解决方案
1)我将每条消息存储到数据库中,并且在jQuery的帮助下,我每秒检查数据库中是否有新消息.当然我也使用缓存.如果有,我们会给出这个消息.
2)我将每条消息存储在一个html文件中,每秒通过jQuery存储该文件一遍又一遍地显示.
什么是更好的?还是有第三种选择?一般来说,这个项目有什么更好的,mysql或文件?
非常感谢你.
PS最重要的问题是:什么更有效,哪种方式会少吃资源!
编辑:现在,它是非常糟糕的许多聊天(让我们说2500个聊天,这意味着5000个用户)使用长轮询并检查文件是否每秒通过javascript编辑?我使用非常类似的聊天方法:http://css-tricks.com/jquery-php-chat/它会杀了我的主机吗?
Rob*_*itt 10
每个人都提出了广泛的意见,但我认为没有人能真正打到头上.
归结为存储数据时,数据量,访问速率以及其他几个因素都决定了什么是最佳存储平台.
有些人建议使用memcached.现在虽然这是一个有效的答案(你可以使用它),但我认为这不是一个好主意,完全基于memcached将数据存储在服务器内存中的事实.
您的内存不是用于数据存储,而是用于实际应用程序,操作系统,共享库等.
在内存中存储数据可能会导致当前运行的其他应用程序出现很多问题.如果在RAM中存储过多数据,则应用程序将无法完成分配给它们的操作.
虽然这比基于磁盘的存储平台(如MySQL)快,但它并不可靠.
我个人会将MySQL用作存储引擎服务器端.这样可以减少您遇到的问题,并使数据更易于管理.
为了加快对客户端的响应,我将查看服务器上的运行节点.
这是因为它是事件驱动和非阻塞.
那是什么意思?
好吧,当客户端A请求存储在硬盘驱动器上的某些数据时,传统上PHP可能会对C++说,请抓住我存储在硬盘驱动器扇区上的这一块数据.C++会说"OK没问题",而它的去获得信息PHP会坐下来,等待读取并返回继续它的操作之前,数据阻止所有其他客户端在其间.
对于节点,它略有不同.Node会向内核说"获取这些信息,当你完成后,给我打电话",然后它继续接收来自其他可能不需要磁盘访问的客户端的请求.
所以突然因为我们已经为内核分配了一个回调,我们不必等待:),快乐的日子.
看看这张图片:
这可能是您寻找的答案,请参阅以下内容,以获取有关节点如何成为您的正确选择的更具描述性和详细信息:
第四个选项,如果您已经拥有要使用的PHP代码,可能不是您想要的,但也许最有效的方法是使用基于Javascript的服务器而不是php.
Node.js很容易成为聊天服务器,可以将所有最近的消息存储为Javascript变量.
您可以使用长轮询或其他彗星技术,这样您就不必等待一秒钟来更新消息.
此外,Javascript服务器的基于事件的体系结构意味着在等待消息时没有闲置的开销.
归档时间: |
|
查看次数: |
7230 次 |
最近记录: |