不确定实施AJAX的想法

时间:2018-05-31 10:50:29

标签: javascript php mysql ajax

我在考虑如何制作即时消息应用程序,并且不想经常发送一个AJAX请求(每隔0.2秒一次),我遇到了以下想法:

  1. 从用户端向服务器发送AJAX请求。
  2. 只有在MySQL数据库发生更改后才会响应
  3. 然后在记录并解析响应后发送下一个AJAX请求
  4. 我知道如何做第一步和第三步,但第二步是我的头脑。

    我假设在第2步,我需要在某处存储请求,而PHP脚本不断循环并寻找一些更改,一旦有更改,保存的请求将是回复了。

1 个答案:

答案 0 :(得分:1)

您可以每隔2秒使用递归并查询数据库,直到找到要向用户提供的新数据。所以基本上你可以做类似

的事情
public function isDataUpdated($lastId) {
   $query = "SELECT * FROM `messages` WHERE `messages`.`message_id` > $lastId";
   return (bool)(count($this->executeSQL($query)) > 0);
}

public function fetchNewMessages () {
    if ($this->isDataUpdated($_GET['last_id'])) {
        /* We have new data! Send it to the user */
    } else {
        sleep(2); // wait for 2 seconds
        $this->fetchNewMessages(); // we use recursion to query the database every 2 seconds to find new data
    }
}

虽然它不是最好的解决方案,但它有望起作用。我建议您查看Sockets in PHP以更好地实现您的目标