首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/AJAX长轮询:返回可用的新内容

PHP/AJAX长轮询:返回可用的新内容
EN

Stack Overflow用户
提问于 2011-03-21 15:58:39
回答 4查看 520关注 0票数 1

我正在创建一个PHP/AJAX聊天客户端。应用程序向PHP脚本发出AJAX请求,PHP脚本获取XML文件的内容,并使用内容进行响应。然后,客户端解析XML并显示聊天。XML文件包含所有的聊天,但是为了保存服务器资源,我只希望PHP脚本返回新的聊天,而不是所有的聊天。以下是我的XML文件:

<?xml version="1.0" encoding="ISO-8859-1"?> <chat> <message> <hour>12</hour> <minute>06</minute> <half>AM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>Hey Guys!</body> </message> <message> <hour>12</hour> <minute>08</minute> <half>AM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>How are you?</body> </message> <message> <hour>3</hour> <minute>28</minute> <half>PM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>Good, thanks!</body> </message> </chat>

<message>标记定义每个新聊天,标记<hour><minute><half><day><month><date>定义每次聊天发送的时间,<body>包含每个聊天。

这是我想到的解决办法:

  1. 在XML文件中添加一个标记,说明每次聊天的编号:<number>12</number>
  2. 在AJAX请求中,让客户端将最新聊天的编号发送到PHP脚本,以检查它是否是最新的,然后让PHP继续检查大于该数字的<number>标记的XML文件,然后在数字较大时返回聊天。

我不知道这会有多好,有更好的方法吗?再说一遍,--我只想让PHP脚本返回新的聊天信息。可以帮我一个忙吗?或者告诉我一些可能有用的东西的方向?谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-21 16:12:03

就我个人而言,我会将所有聊天消息记录在数据库中。然后,每x秒运行一次类似于以下内容的查询:

代码语言:javascript
复制
SELECT *
FROM chat_messages
WHERE chat_id = 'your-chat-id'
AND time_sent > 'last-time-queried'
ORDER BY time_sent ASC

您可以将其包装在一个独立的脚本中,该脚本返回XML格式,然后使用jQuery命中。然后在回调参数循环中,遍历任何返回的XML节点,并将它们作为新的聊天文本行插入到请求文档中。

票数 1
EN

Stack Overflow用户

发布于 2011-03-21 16:04:03

你的想法是对的但是..。寻找新的聊天程序,喜欢为每个请求打开不断增长的xml文件.您的服务器可能会变得很重!为什么不使用一个数据库,它会更轻,甚至可能有数据库可以使用xml文件作为后端.

票数 2
EN

Stack Overflow用户

发布于 2011-03-21 16:11:58

也许你在寻找一个彗星解决方案?有许多讨论类似主题的线程,例如:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5380241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档