使用PHP/MySQL客户端从在线无缝过渡到离线?

使用PHP/MySQL客户端从在线无缝过渡到离线?,php,jquery,mysql,database,json,Php,Jquery,Mysql,Database,Json,我有PHP/MySQL前端,它使用一些非常大的表单来收集数据。我在后台使用JSON post定期将数据保存到数据库中。偶尔,用户会失去连接,但会继续工作。这些数据随后丢失,导致挫折感等 当连接丢失时,是否可以让客户端无缝地过渡到将数据保存在本地文件中,然后在连接恢复后同步回数据库?我知道这不是一个简单的请求,我只是想看看它是否已经完成,或者理论上可以完成 提前感谢。您可以尝试使用本地存储。您可以找到有关该机制的基本信息 其简单用途如下: 1.当用户打开表单时,您会检查本地存储中是否有任何数据(如

我有PHP/MySQL前端,它使用一些非常大的表单来收集数据。我在后台使用JSON post定期将数据保存到数据库中。偶尔,用户会失去连接,但会继续工作。这些数据随后丢失,导致挫折感等

当连接丢失时,是否可以让客户端无缝地过渡到将数据保存在本地文件中,然后在连接恢复后同步回数据库?我知道这不是一个简单的请求,我只是想看看它是否已经完成,或者理论上可以完成


提前感谢。

您可以尝试使用本地存储。您可以找到有关该机制的基本信息

其简单用途如下: 1.当用户打开表单时,您会检查本地存储中是否有任何数据(如果该数据比来自服务器的数据更新),如果是,则加载该数据。 2.js偶尔会尝试发送带有更新的ajax调用。在出现故障时(连接超时等),js只在本地保存数据(带有时间戳),并在以后尝试保存

但是,您可以通过将每次更改(或当用户移动到另一个字段时)的表单数据保存到localstorage中,并偶尔运行第二个函数(尝试将此数据发送到服务器)来稍微改进它


这种解决方案的缺点是它在旧浏览器中不起作用,但如果您真的需要,您可以通过将LocalStorage替换为。。。曲奇它将非常难看,但可以根据需要工作。

您可以检查最后一个数据部分是否已成功发送。如果没有,请将其存储在内存中,并在下一个间隔重试。查看。您可以在ajax错误的情况下实现这一点。您还应该研究。如果您不想使用^note is 4 linx之类的工具,它将帮助您解决很多问题there@SpYk3HH如何解决长轮询丢失数据的问题?特别是长轮询用于获取数据,而不是发送数据。此外,他可以使用PHP长轮询确定“连接”状态,并在连接丢失时发送返回。因此,为用户界面提供了一种方法,可以“告诉用户”连接当前已丢失,也可以准备“本地保存”也有可能,但我认为在这种情况下使用长池并不好,因为它在服务器端的成本相当高,因为apache必须为每个用户保持一个开放的连接……也许。但这只是一个想法,我想他可能想调查一下你的答案。我同意,没有一个正确的解决方案,只有最适合你和你的“客户”的解决方案。我刚刚描述了针对这种情况的更好的解决方案(在性能方面)-仅为此使用长池似乎就像使用大炮杀死苍蝇一样…:)我接受这一点是因为,在这个时刻,这似乎是最好的解决方案。我们处于一个完全控制服务器和客户端的封闭环境中,因此这对我们来说可能特别有效。