从数据库中断后一个接一个地更新单元格

时间:2010-09-10 23:32:54

标签: php jquery ajax timer user-experience

我有一个类似于在线电子表格的Excel用于某种目的,它几乎已经完成并且工作正常但是我遇到了一个问题,并且想要纠正。

您可以在http://partydesigners.site50.net/Excel%20Like%20App/Index.html

看到电子表格

问题在于,一次有超过1个用户正在使用此电子表格,如果一个人修改任何单元格,另一个人没有在其电子表格中更新它,所以我打算使用setTimeout()函数来调用将从数据库更新工作表中的每个单元格的函数。 “

现在问题是有40行,每行有10条记录来自数据库,400条记录需要每隔“n”秒更新一次,因此它会挂起浏览器并且UE会受到影响。我以为我可以创建一个更新一个单元格的计时器,然后在几秒钟后移动到另一个单元格,然后在链条中几秒钟后更新另一个单元格。

你可以想象,当我更新第一个单元格,然后当它完成更新时,它会为它旁边的单元格调用一个函数,依此类推一个继续链。

那么你会为它编写什么伪jquery代码?

1 个答案:

答案 0 :(得分:0)

正如Jonathun Kuhn在评论中提到的,最好只跟踪需要更改的单元格并相应地更新它们

具体取决于您如何对数据库进行此设置,具体取决于如何跟踪已更改的内容。但我的第一个想法是有一个表,跟踪每行一个变化以及发生变化的时间戳。然后你可以每隔'n'秒从浏览器运行一个函数,它使用一些ajax来请求所有更改,因为它是最后一次请求(可以跟踪上次更新的唯一ID,按时间戳排序并抓取所有新内容)。

这应该有助于加快速度,因为它只会花时间更新实际需要它的单元格。

然而,作为免责声明,第二个用户在第一次编辑显示在屏幕上之前仍然很可能更新了一个单元格。 (想想两个用户几乎在同一时间编辑一个单元格,也许第二个用户在第一个单元格之后启动'保存'毫秒。)我能想到处理这个的最好方法是向第二个用户显示警告,如果它被注意到他们在上一次编辑后很快就编辑了一些东西,他们可能会覆盖数据。

相关问题