PHP 应用到桌面应用

PHP application to Desktop Application

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

该应用程序将被我们公司的很多人使用,因此我们考虑在他们的计算机上安装一个网络服务器(Apache)并在他们的机器上制作该应用程序运行。问题是,如果我们决定走这条路,我们必须:

我们没有时间考虑真正的桌面 Java 应用程序,因为这个应用程序将从 1 月开始使用,所以我们没有时间开发它。

你有什么建议吗?有什么我没有考虑到的事情,或者可以帮助我的技术吗? 谢谢!

PS。我考虑过 PHP Desktop 的 Nightrain 之类的程序,但它们只是避免安装 Apache,仅此而已...

简介

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

解决方案

  1. 清除所有主键和外键。
  2. 将它们替换为带有索引的 BINARY(16)

每条记录都需要使用CSRNG随机生成其伪主键,二进制16只是为了方便遵循UUID标准。这将确保每条新记录保持唯一索引,尽管缺乏对其他分布的了解。

你 table 不会有主键索引,因为它们是唯一的,而且由于数据库将是分布式的,无论如何都不可能检查键的唯一性,所以没有必要使用它。

  1. 每台笔记本电脑都需要整个数据库的副本。
  2. 每台笔记本电脑只允许添加新数据,不允许删除或修改基础数据。

事实上,从现在开始,中央数据库中的所有数据通常都是write-once/read-only。无论新合并的数据有多么错误,都绝对不能删除或修改。

  1. 根据时间戳,新数据应被视为 "updates"。

所以每个 table 都需要一个时间戳。

  1. 最后,应该保留复制分发时间的记录,以保留将哪些数据合并回中央数据库的知识。

剩下的是一个中央数据库,它接收所有数据,并且数据的更改将由更新数据的存在来表示。

结论

如果我真的也有,我只会使用这个解决方案。事实上,我估计只有 80% 的可能性即使在不合格的质量下工作。它还假定您可以将所有剩余的开发时间用于数据插入方法的重构。

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

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