我正在创建一个PHP / AJAX聊天客户端。应用程序向PHP脚本发出AJAX请求,该脚本获取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>
和{{ 1}}定义每个聊天发送的时间,<date>
包含每个聊天。
这是我想到的解决方案:
<body>
<number>12</number>
标记,其数字大于那个,然后当有一个更大的数字时返回聊天。我不知道这会有多好用,有没有更好的方法呢?再一次,我只是希望PHP脚本在他们来时返回新聊天。有人可以帮助我或指出我可能有用的方向吗?谢谢!
答案 0 :(得分:2)
你的想法是对的,但是......寻找新的聊天内容为每个请求打开你不断增长的xml文件...对你的服务器来说可能会变得很重!为什么不使用数据库,它会更轻,甚至可能有db可以使用xml文件作为后端......
答案 1 :(得分:1)
就个人而言,我会记录数据库中的所有聊天消息。然后,每个 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节点,并将它们作为新的聊天文本行插入到您的请求文档中。
答案 2 :(得分:0)
也许您正在寻找Comet解决方案?有很多线程讨论类似的主题,例如:
答案 3 :(得分:0)