Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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 使用setInterval从数据库获取最新数据的开销_Php_Jquery_Sql_Ajax_Database - Fatal编程技术网

Php 使用setInterval从数据库获取最新数据的开销

Php 使用setInterval从数据库获取最新数据的开销,php,jquery,sql,ajax,database,Php,Jquery,Sql,Ajax,Database,我正在创建一个消息传递功能,每隔几秒钟从数据库中获取最新消息,基本上这种方法会进行连续的数据库搜索以显示新消息 代码示例: function getLatestActivities(){ var ignoreMessagesArr = $("input.activityId").map(function(){ return this.value; }).get().join(","); var profileId = $("input#userActivityId").val(

我正在创建一个消息传递功能,每隔几秒钟从数据库中获取最新消息,基本上这种方法会进行连续的数据库搜索以显示新消息

代码示例:

 function getLatestActivities(){
    var ignoreMessagesArr = $("input.activityId").map(function(){ return this.value; }).get().join(",");
    var profileId = $("input#userActivityId").val();

    $.ajax({
        traditional: true,
        dataType: "json",
        type: "GET", url: "include/process.php", 
        data:{
            getLatestActivity: "true",
            toUser: profileId,
            ignoreMessages: ignoreMessagesArr
        },
        success: function(data){
            $.each(data, function (i, elem) {
                $('.commentMessage').after(elem.value);
            });              
        }
    });   
}

我想知道的是,是否有一种更有效的方法来执行此任务,即检测数据库中的更改(??)。

您可能想了解它是否适合与服务器进行实时通信。然后,您可以设计后端,以便在数据可用时将数据推送到客户端,而不是不断地从前端轮询数据库以获取新信息。您可能希望了解它是否适合与服务器进行实时通信。然后,您可以设计后端,以便在客户端可用时将数据推送到客户端,而不是从前端不断轮询数据库以获取新信息。

允许客户端和服务器之间进行双向通信。

允许客户端和服务器之间进行双向通信。

我认为您应该仅请求插入数据库中的最后一个
ID
,并将其作为参数添加到ajax请求中

process.php
应该处理该
ID
以及是否有其他行进行搜索


在我看来,您应该只请求数据库中插入的最后一个
ID
,并将其作为参数添加到ajax请求中

process.php
应该处理该
ID
以及是否有其他行进行搜索


听起来您希望web应用程序在数据库中更改时接收数据,但不一定要实时发送数据。如果需要双向通信,那么您正在寻找Web套接字,它可以帮助您进行服务器端通信,但需要您运行服务器。有一个GoogleCode项目可以为PHP启用WebSockets,名为,但如果我没记错的话,需要在单独的进程中运行它(即从命令行运行)。这样就可以解决服务器部分的问题,但现在您必须担心前端

目前只有FireFox和Chrome完全支持Web套接字。对于那些缺乏支持的浏览器,您需要一个polyfill。因此,Web套接字的实现可能有点混乱,所以请确保这就是您想要做的

另一方面,如果你的webapp只需要接收数据,那么EventSource(又称服务器发送的事件)就是一个不错的选择。在前端,您实际上不必在服务器上做太多工作。同样,对于不太受欢迎的浏览器,您将需要一个polyfill,但这几乎只意味着IE。有关如何使用此功能,请参阅以下网站/教程


如果这些都不起作用,那么有几个选择。持续轮询使用某种重复结构,如setTimeout、long polling(又称挂起get),其中服务器将AJAX请求保持打开状态,直到有新数据,还有无限iframe技巧,甚至可能是连接到服务器以获取数据的Flash插件。

听起来您希望web应用程序在数据库中更改时接收数据,但不一定要实时发送数据。如果需要双向通信,那么您正在寻找Web套接字,它可以帮助您进行服务器端通信,但需要您运行服务器。有一个GoogleCode项目可以为PHP启用WebSockets,名为,但如果我没记错的话,需要在单独的进程中运行它(即从命令行运行)。这样就可以解决服务器部分的问题,但现在您必须担心前端

目前只有FireFox和Chrome完全支持Web套接字。对于那些缺乏支持的浏览器,您需要一个polyfill。因此,Web套接字的实现可能有点混乱,所以请确保这就是您想要做的

另一方面,如果你的webapp只需要接收数据,那么EventSource(又称服务器发送的事件)就是一个不错的选择。在前端,您实际上不必在服务器上做太多工作。同样,对于不太受欢迎的浏览器,您将需要一个polyfill,但这几乎只意味着IE。有关如何使用此功能,请参阅以下网站/教程


如果这些都不起作用,那么有几个选择。持续轮询使用某种重复结构,如setTimeout、长轮询(又称挂起获取),服务器将AJAX请求保持打开状态,直到有新数据,还有无限iframe技巧,甚至可能是连接到服务器以获取数据的Flash插件。

我正在创建一个社交网络风格的网站,它有一个个人资料评论区和一个聊天区。人们一直在说我应该使用websocket,我只是四处看看,就像你说的一些浏览器缺乏支持一样,我真的希望maximuim支持多个浏览器,就像facebook和twitter。如果你想看到用户在键入内容时输入的内容,那么我会使用websocket。否则,我会使用EventSource接收消息,使用普通AJAX发送消息。我正在创建一个社交网络风格的网站,它有一个个人资料评论区和一个聊天区。人们一直在说我应该使用websocket,我只是四处看看,就像你说的一些浏览器缺乏支持一样,我真的希望maximuim支持多个浏览器,就像facebook和twitter。如果你想看到用户在键入内容时输入的内容,那么我会使用websocket。否则,我将使用EventSource接收消息,使用普通AJAX发送消息。
$query = mysql_query("SELECT `ID` FROM `table` WHERE `ID`>'$lastId'");
$result = mysql_num_rows(); //use that to see if you have new rows.