我正在为一家贸易公司开展一个网络应用程序项目,该项目希望能够离线访问网络应用程序,并且可以在再次连接到网络时进行更新。
界面易于离线使用 - 任何php服务器都可以使用Web应用程序的本地克隆。问题是数据库更新:
组件 我将有两件事要更新:
mysql数据库
最终将存在的“下载图片”(我使用imperavi redactor作为文本编辑器,并将任何图片下载到必须同步的本地文件夹。这部分非常简单,我只需添加新文件......
更大的问题来自数据库更新:有几个用户(6到10之间),我正在尝试通过添加新条目和替换现有条目(如复制数据库,但正在工作)来考虑更新方法在类似git的系统上:添加添加,处理更新。
我无法看到如何使用复制,因为没有服务器在线,必须按需进行同步。
任何提示?不首选的解决方案是检查每个表格的每个表格,但我想这不是最佳方式。
顺便说一下,我正在使用Symfony 2.3和Doctrine 2,如果你有任何使用这些框架的提示,那就太棒了,谢谢!
答案 0 :(得分:0)
真实推荐
我建议您与客户一起深入了解此要求。他们真的需要这个,还是只是这么想?
实施它会增加项目的复杂性,并且可能有更好的替代方案来满足客户的实际需求。例如,他们可以购买便宜的蜂窝调制解调器并使用它连接到主应用程序吗?
如果记录独立
如果您正在收集可通过多个物理剪贴板完成的数据类型,例如:在会议中收集人员的姓名和电子邮件地址,只需在数据库中添加一列,指明记录的来源并将其作为主键的一部分。
如果记录依赖于数据库中的其他数据
不要将更新存储在主数据库的副本中,而应考虑在断开连接的应用程序中记录事务队列。这将允许您在重新连接期间在中央数据库上按顺序重放事务。
在不知道你将要做什么类型的交易的情况下,考虑一个简单的银行应用程序的这个可能的交易队列(用英文写的;你需要一个好的格式,并且可能存储更多的信息):
- Deposit USD 100.00 to account 12345, received at 2014-01-01T12:00:00
- Deposit CAD 50.23 to account 55555, received at 2014-01-01T12:00:03
- Withdraw USD 25.00 from account 12345, received at 2014-01-01T15:00:00
这有几个含义:
如果你有多个离线应用程序副本,例如,这将变得更加难以管理。如果Bobby和Sue都将副本带到会议中并独立收集数据以便稍后重播。