Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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 基于MySQL数据库的网页更新_Php_Javascript_Jquery_Mysql - Fatal编程技术网

Php 基于MySQL数据库的网页更新

Php 基于MySQL数据库的网页更新,php,javascript,jquery,mysql,Php,Javascript,Jquery,Mysql,免责声明:我熟悉PHP、MySQL、jQuery、AJAX,但我绝对不是这些方面的专家 我正在开发一个web应用程序,它每两秒钟检查一次MySQL数据库的更新。目前,共有5个表,为了便于讨论,我们可以假设每个表的行数少于50行。我继承的设计是每两秒钟刷新5个iframe,大约每个iframe对应一个表 此后,我尝试用div替换iframe来改进这一点。检查信息架构中的更新时间,仅更新自保存上次更新时间以来内容已更改的div。为此,我使用jqueryajax调用从PHP脚本获取新数据。此策略的问题

免责声明:我熟悉PHP、MySQL、jQuery、AJAX,但我绝对不是这些方面的专家

我正在开发一个web应用程序,它每两秒钟检查一次MySQL数据库的更新。目前,共有5个表,为了便于讨论,我们可以假设每个表的行数少于50行。我继承的设计是每两秒钟刷新5个iframe,大约每个iframe对应一个表

此后,我尝试用div替换iframe来改进这一点。检查信息架构中的更新时间,仅更新自保存上次更新时间以来内容已更改的div。为此,我使用jqueryajax调用从PHP脚本获取新数据。此策略的问题在于,外部程序正在异步更新数据库,因此它可能在一秒钟内进行多次更新

这个问题与其他问题非常相似,除了更新时间提供的整个第二个解决方案在我的情况下是不够的,如果我只根据我的更新。


任何解决方案都将不胜感激

我有一个类似的实现。我需要从中获取的表有一列,上面写着CREATED_TIME。可以使用列默认值或从应用程序中插入此列以及当前_时间戳

最初,将内容加载到div后,保留一个对应于每个div的javascript变量,该div存储客户机\u MAXCREATED\u时间。每次需要将div更新为最新的行时,请执行以下步骤:

使用ajax向服务器发出请求,请求的CheckIfTable1Updated?maxTime=CLIENT\u MAXCREATED\u时间值为。 服务器应从表1中获取服务器\u MAXCREATED\u时间值,并与客户端发送的值进行比较。 如果表中的最大值大于客户端发送的值,则应使用服务器\u MAXCREATED\u时间发送响应,否则发送0。 如果客户端收到0,则不执行任何操作。 如果客户端接收到大于零的值,即服务器\u MAXCREATED\u TIME,则使用ajax调用服务器-“RetrieveTable1Updates?fromTime=client\u MAXCREATED\u TIME&toTime=SERVER\u MAX\u TIME\u JUST\u RECEIVED” 服务器处理此操作,根据每个客户端获取具有客户端\u最大\u时间和服务器\u最大\u时间\u之间的约束的行。 服务器发送html元素。 客户端接收数据,并将其附加到相应的div。 将客户端\u MAXCREATED\u时间设置为服务器\u MAXCREATED\u时间,在第一个ajax调用中接收。
注意:这也可以用row_id进行处理,这比时间戳处理容易得多,因为两者之间需要CLIENT_MAX_TIME+1来处理重复。

将HTML 5套接字与jquery一起使用,以获得最大的好处。

您能否澄清您的担忧。你的“例外”到底是什么?如果在一秒钟内进行多次更新,那又有什么关系呢?你不能同时检索它们吗?比如说,一个更新在1.0秒时出现,我更新了页面。然后在300毫秒后的1.3秒,用户将错过此更新,因为更新时间仍将指示更新发生在时间1.0。您可以将两个请求合并为一个-检查上次更新id/时间,如果它大于当前显示给用户的id/时间-返回更改并更新页当一个请求可以在几乎没有其他性能影响的情况下完成任务时,您可以节省发送两个请求的开销。是的。如果您能够以这种方式处理ajax请求,那么您可以这样做。这可能有点复杂,更适合高级用户。非常感谢!我希望找到一种不改变数据库/外部应用程序的方法,但这可能是我必须走的路。我必须支持不支持HTML5的旧web浏览器。