PHP应用程序到桌面应用程序

时间:2015-12-04 11:03:14

标签: php mysql json sqlite desktop-application

我为我的公司开发了一个PHP应用程序,问题是我刚刚发现该应用程序也必须脱机工作。 应用程序的工作方式如下:从MySQL数据库加载一些数据,然后你必须编译一些清单,在数据库中插入新数据,最后生成一个JSON。

该应用程序将被我们公司的许多人使用,因此我们考虑在他们的计算机上安装Web服务器(Apache)并使应用程序在他们的机器上运行。问题是,如果我们决定采用这种方式,我们必须:

  • 在启动应用程序之前从MySQL下载所有数据 (当用户访问互联网时)并将此数据保存为JSON 文件
    • 更改项目中的所有查询,以便从JSON而不是数据库中获取数据
    • 另外,有很多函数可以实时地将数据插入到数据库中,所以我们必须使用SQLite然后 将数据传输到MySQL数据库
    • 最后,通过这种方式,使用该程序的人可以访问所有PHP文件,他们可以随时修改它们。

我们没有时间考虑真正的桌面Java应用程序,因为此应用程序将从1月开始使用,因此我们没有时间进行开发。

你有什么建议吗?有什么我没有想到的,或者是一种可以帮助我的技术? 谢谢!

PS。我已经考虑过像PHP桌面的Nightrain这样的程序,但它们只避免安装Apache,仅此而已......

1 个答案:

答案 0 :(得分:1)

<强>简介

既然您显然需要快速解决方案,我会给您一个。这是基于我们所知的信息。警告,这个解决方案并不优雅,当你有机会时你需要更换它。

<强>解决方案

  1. 清除所有主键和外键。
  2. BINARY(16)替换为索引。
  3. 每个记录都需要使用CSRNG随机生成伪主键,二进制16只是方便遵循UUID标准。这将确保每个新记录保持唯一索引,尽管缺乏其他发行版的知识。

    你们的表没有主键索引,因为它们是唯一的,并且由于数据库是分布式的,所以无论如何都无法检查键的唯一性,所以没有必要使用它

    1. 每台笔记本电脑都需要整个数据库的副本。
    2. 每台笔记本电脑只允许添加新数据,绝不删除或修改基础数据。
    3. 事实上,通常,中央数据库上的所有数据从现在开始将是一次写入/只读。无论新合并的数据有多么错误,都不能删除或修改它。

      1. 新数据应根据其时间戳被视为“更新”。
      2. 所以每个表都需要一个时间戳。

        1. 最后,应保留一份关于何时进行复制分发的记录,以保留将哪些数据合并回中央数据库的知识。
        2. 您剩下的是一个接收所有数据的中央数据库,对数据的更改将由更新数据的存在来表示。

          <强>结论

          如果我真的也有,我只会使用这个解决方案。事实上,我估计它甚至有80%的可能性甚至可以用于低于标准的质量。它还假设您可以将所有剩余的开发时间用于重新分解数据插入方法。

          您将不得不处理这样一个事实,即中央数据库需要大量的管理工作来管理数据的完整性,您需要假设您无法更改从笔记本电脑合并的输入格式。

          每个新功能都需要向后兼容旧数据。