Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/AJAX长轮询:按原样返回新内容';有空吗_Php_Xml_Ajax - Fatal编程技术网

PHP/AJAX长轮询:按原样返回新内容';有空吗

PHP/AJAX长轮询:按原样返回新内容';有空吗,php,xml,ajax,Php,Xml,Ajax,我正在创建一个PHP/AJAX聊天客户端。应用程序向PHP脚本发出AJAX请求,PHP脚本获取XML文件的内容,并用内容进行响应。然后,客户端解析XML并显示聊天记录。XML文件包含所有聊天记录,但为了节省服务器资源,我只希望PHP脚本返回新聊天记录,而不是所有聊天记录。这是我的XML文件: 12 06 是 星期六 前进 第十九 嘿,伙计们! 12 08 是 星期六 前进 第十九 你好吗? 3. 28 颗粒物 星期六 前进 第十九 很好,谢谢! 标签定义每个新聊天,标签,,,,,定义每个聊天

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


12
06
是
星期六
前进
第十九
嘿,伙计们!
12
08
是
星期六
前进
第十九
你好吗?
3.
28
颗粒物
星期六
前进
第十九
很好,谢谢!

标签定义每个新聊天,标签
定义每个聊天发送的时间,并且
包含每个聊天

这就是我想到的解决方案:

  • 向XML文件中添加一个标记,告知每个聊天室的号码:
    12
  • 在AJAX请求中,让客户端向PHP脚本发送最新的聊天号码,以检查它是否是最新的,然后让PHP连续检查XML文件中是否有大于该号码的
    标记,然后在有大于该号码的时候返回聊天

  • 我不知道这会有多好,有没有更好的方法?再次强调,我只希望PHP脚本在新聊天时返回它们。有人能帮我解决问题,或者为我指出一些可行的方法吗?谢谢

    你的想法很对,但是。。。正在寻找新的聊天记录,并为每个请求打开不断增长的xml文件。。。您的服务器可能会变得非常沉重!为什么不使用数据库,它会更轻,甚至可能有数据库可以使用xml文件作为后端…

    也许您正在寻找解决方案?有许多线程讨论类似的主题,例如:


    • 就我个人而言,我会将所有聊天信息记录在数据库中。然后,每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节点,并将它们作为新的聊天文本行插入到请求文档中。

      如果您可以查询XML以仅接收超过某个时间戳的数据,那就太好了,例如,Thank yent!我会调查的!