我正在创建一个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>包含每个聊天。
这是我想到的解决办法:
<number>12</number><number>标记的XML文件,然后在数字较大时返回聊天。我不知道这会有多好,有更好的方法吗?再说一遍,--我只想让PHP脚本返回新的聊天信息。可以帮我一个忙吗?或者告诉我一些可能有用的东西的方向?谢谢!
发布于 2011-03-21 16:12:03
就我个人而言,我会将所有聊天消息记录在数据库中。然后,每x秒运行一次类似于以下内容的查询:
SELECT *
FROM chat_messages
WHERE chat_id = 'your-chat-id'
AND time_sent > 'last-time-queried'
ORDER BY time_sent ASC您可以将其包装在一个独立的脚本中,该脚本返回XML格式,然后使用jQuery命中。然后在回调参数循环中,遍历任何返回的XML节点,并将它们作为新的聊天文本行插入到请求文档中。
发布于 2011-03-21 16:04:03
你的想法是对的但是..。寻找新的聊天程序,喜欢为每个请求打开不断增长的xml文件.您的服务器可能会变得很重!为什么不使用一个数据库,它会更轻,甚至可能有数据库可以使用xml文件作为后端.
发布于 2011-03-21 16:11:58
也许你在寻找一个彗星解决方案?有许多讨论类似主题的线程,例如:
https://stackoverflow.com/questions/5380241
复制相似问题