Ajax、php、mysql 聊天

Ajax, php, mysql chat

我是 Ajax 的新手,想知道这种方法是否足以创建聊天应用程序。我的问题是:如果我有 100 万用户,Ajax + php + mysql 会不会有性能问题?会滞后吗?我可以扩展吗?

这是我的代码:

     var inty = setInterval(function()
  {

  var qt = document.getElementById("friend_name_goes_here").innerHTML;
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("chat_div").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "getchat.php?q="+qt+"&w="+me_name, true);
  xhttp.send();
  //console.log(qt);
}, 300);

那是 ajax 部分,然后 "getchat.php" 是我查询数据库的地方。

我对此很陌生。任何指导将不胜感激!

mysql 行如下所示: 约翰 - 你好,鲍勃!

鲍勃-约翰,你不懂ajax!

Ajax 这种方法对于实时聊天之类的事情非常不利。 您的 php 脚本将被非常频繁地调用,并且会非常重载..

为了您的目的,我推荐 WebSocket。

https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications

您将需要使用 Comet 服务器将消息从服​​务器传送到其他客户端。

在你的 rialization 中,每秒对服务器的查询太多。并且用户将以 300 毫秒的间隔接收消息,但是如果您将使用彗星服务器,用户将立即收到消息。

在 php 共享主机或小型 vps 中,10 或 20 个在线用户的性能会出现问题。

例如,您可以将 this tutorial about using CppComet 与 php 一起使用。

CppComet 将使用 javascript 通过 websockets 安装持久连接。当您需要向其他用户发送任何消息时,您可以使用 api 从 php 代码向 CppComet 发送请求。