对于学校我必须创建一个基于AJAX / PHP的聊天框,有人可以通过输入用户名并按下点击来加入。 我完成了所有工作,但我有一些问题,我这样做是否是正确的方法。
一个例子是我从javascript使用setInterval来每秒从数据库中获取最新的5条记录。但是如果有人在网站上改变了这个间隔呢?并使它每秒查询数据库?我在考虑存储最后执行的查询日期,并检查它是否实际上是我设置的1秒。但是我会在哪里储存这个?我不想将它存储在我的数据库中,因为我将不得不查询数据库。
另一个问题是,专业聊天框实际上是否使用间隔在x时间内检查数据库中的新记录?如果没有,他们如何去做呢?
ATM我在某些方面我并不知道应该如何解决这个问题,是否有一位经验丰富的PHP开发人员可以对其中的任何一个给出答案?
答案 0 :(得分:1)
每5秒请求一次服务器(有或没有数据库查询)是昂贵的,并且不能扩展。不要让客户端请求每个固定的时间间隔,让服务器在有新消息时通知客户端。为此,您需要更多持久性连接。有两种流行的方法:
Ajax Long Polling :通常,Web服务器会在成功提供内容后关闭其连接。长期投票背后的想法是保持连接长时间打开并通过查询来提供内容。一旦有新消息,它就会提供给客户端。一旦连接超时,它就会重新打开一个新连接。
WebSocket :WebSocket允许Web浏览器和服务器通过其WebSocket协议(类似于HTTP协议)进行持久连接。有些浏览器尚不支持此功能。