【发布时间】:2014-04-08 09:53:19
【问题描述】:
我有一个 android 应用程序,它需要从运行 MySQL 数据库的服务器获取新数据。我通过我的domain.com/mypanel/ 在线访问的面板将数据添加到数据库。
在客户端上获取数据以减少开销的最佳方式是什么,但要尽可能减少编程工作量。客户端不需要在更新后立即获取最新的数据库更改,即,如果客户端在更新后几个小时更新就可以了。
目前我想到了以下几点:
- 将
timestamp列添加到数据库表中,以便我知道进行了哪些更改 - 在客户端(在应用程序中)运行某种后台服务,每 X 小时运行一次,然后检查自上次成功的服务器-客户端同步以来的最新更新
- 使用 HTTP-POST 将时间间隔发送到客户端不再有任何更新的服务器
- 在服务器上,会有某种 MySQL
SELECT-statement 考虑发送的时间间隔(如果没有从客户端发送的时间间隔,只需选择所有内容,例如在第一次同步的情况下(full-sync)) --> JSON 编码数组 -> 将 JSON 响应发送到客户端 - 在客户端,取数据,逐行循环插入到本地数据库文件中
我的问题是:
有什么你宁愿做不同的事情吗? 或者您可能会将数据库更改作为整个包/sql 文件而不是原始数据作为数组发送?
如果在同步期间互联网连接中断,会发生什么情况?我想到了以下方法来避免此类过程中的任何冲突:只有在成功检索完整的服务器响应(即完整的 JSON 数组)之后,ONLY 然后将行插入本地数据库并将本地更新时间戳更新为实际时间。如果我只检索了一些 JSON 行并且 Internet 连接在其间中断(或应用程序被终止),我不会将任何检索到的行插入到我的本地应用程序数据库中,这意味着下一次后台服务正在运行,希望不会有冲突。
非常感谢
【问题讨论】:
-
SQLite 事务支持很棒 - 使用它并且不用担心同步失败等。
-
您能详细说明一下吗?是否可以将事务连接到服务器端的 PHP 脚本!?
-
@blue:你能告诉我更多吗?
标签: php android mysql json client-server