繁体   English   中英

浏览器之间通过PHP进行通信

[英]Communication between browsers via PHP

我正在为一个学校项目构建一个简单的ajax聊天客户端,并想到了实现这一点的方法,但似乎IMO 非常繁琐的方法:

1)用户A发送服务器端PHP脚本接受并保存到数据库的消息2)用户B的浏览器定期启动服务器端PHP脚本,检查数据库中是否有用户B的消息.PHP脚本从用户A查找消息并返回它们。

这是正确的方法吗? 没有数据库可以实现这两个用户之间的通信吗?

(这是我的第一个web应用程序......如果我在没有浏览器+ HTTP的情况下进行此操作,我只需要创建一个带有持久类的Java程序,该类可以监听TCP套接字,并将消息转发到相应的地址)

是的,您的解决方案足以启动。 如果有特定用户的聊天消息,您正在做的是轮询服务器。 够好了。

但是如果你想转到下一个级别(可能很难),你可以拥有一个可以将新消息推送到客户端浏览器的服务器。 这被称为“彗星”。 但它需要大量的服务器资源(如果您的用户群将超过数千)。

首先尝试使用您的方法,然后再进行此操作。

每个PHP“实例”仅持续请求的持续时间,因此您需要持久存储(例如聊天消息的数据库)。

是的,我知道这确实有效,因为我过去实现了一个非常相似的系统。

彗星方法

Teehoo,如果你想要一种工作方法,你所建议的就好了,特别是如果它只适用于学校项目。

如果你想要像Facebook那样的方式,你应该看看commet HTTP连接。 它非常聪明。 我记得当我第一次阅读它时,我认为它是巧妙的。 它通过不断轮询新消息来提供快速更新并几乎消除了AJAX依赖性,因为您始终保持与Web服务器的连接不断打开。

读一下彗星http连接,(但不要看彗星聊天应用程序,他们是一家公司试图销售类似于facebook聊天应用程序的产品而不是你想要的......虽然他们已经实现了彗星方法)。

彗星聊天#

http://en.wikipedia.org/wiki/Comet_(programming)

然后读这个:

http://www.zeitoun.net/articles/comet_and_php/start

但无论如何,你建议对学校项目没问题。

好的是答案。 没有数据库就可以做到。

但是......你必须以某种方式将数据存储在中央服务器上。 对于聊天应用程序,理性数据库对于这种聊天类型的应用程序并不理想,但如果你有一个大型网站,它只是真正相关的。 如果您正在为项目执行此操作,那么数据库将足以存储聊天信息。 你只需要使用javascript / ajax轮询数据库中的新消息。

如果您对不使用数据库感兴趣,我建议使用非SQL方法。 谷歌是你的朋友,因为有很多选择。

这是正确的方法吗? 没有数据库可以实现这两个用户之间的通信吗?

您至少需要某种形式的存储 - 数据的持久性特征取决于您。 数据库是一种在较长时间内保留数据的好方法。

您还可以考虑通过共享内存存储,例如memcache。

您还可以使用类似彗星的JavaScript方法。 您保持与浏览器打开的PHP页面的连接,直到PHP页面收到消息。

但是,您仍然只能为每个连接提供PHP页面,因此您需要一些存储空间。 如果你想要它真的很快,你可以使用内存。

在PHP中使用内存: http//www.php.net/manual/en/function.apc-add.php

Comet聊天方法: http//www.zeitoun.net/articles/comet_and_php/start#comet_with_classic_ajax_litte_chat_demo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM