11

我有一个将数据在线存储在 MySQL 数据库中的 Web 应用程序。它还使用 PHP 代码检索数据,在服务器上执行计算并将结果发送回用户。

数据非常简单:名称、描述、价格、增值税、从数据库中读取并在服务器端进行操作的每小时费用。

客户通常在互联网连接较差或不可用的环境中工作。在这种情况下,我希望客户能够离线工作:输入新名称、描述、价格并使用最后的增值税进行计算。然后在连接可用时立即同步所有数据。

现在的问题是我不知道实现这一目标的最佳方式或技术是什么。别担心,我不是要求为我编写代码。您能否向我解释一下构建这样一个系统的正确方法是什么?

有没有一种简单的方法可以在本地使用我的在线 MySQL 和 PHP 代码?

我是否应该将所需的数据保存在本地文件中,在 JavaScript 中重建计算,在本地执行它们,然后在数据库可用时同步数据。

我应该使用两个 MySQL 数据库,一个本地数据库,一个在线数据库,并在数据可用时在两者之间进行同步?如果是,我应该使用哪种技术(语言)来执行此操作?

如果可能的话,我想从过去从事类似项目的 PHP 编码员那里得到答案,并且可以给我有关框架结构和要使用的技术的详细信息。请记住,我是这种编写应用程序的新手,如果您能抽出几分钟时间向我解释一切,就像我六岁或愚蠢(我就是!)

我非常感谢任何帮助和建议。

再见,

多纳托

4

2 回答 2

13

基本上有3种方法:

版本 1:“老派”:PHP-Gtk+ 和 bcompiler

  • 首先,如果您还没有这样做,您需要将业务逻辑与表示层(HTML、模板引擎等)和数据库层分开
  • 然后调整您的数据库层,以便它可以使用备用数据库(想到本地 SQlite)并在再次联机时执行同步
  • 最后使用 PHP-Gtk+ 创建一个新的 UI 并用 bcompiler 打包所有这些

版本 2:“标准”:随身携带服务器

  • 看看 Server2Go、WampOnCD 和朋友们创建一个“可双击的网络服务器”(从Z-WAMP开始)
  • 您仍然需要像版本 1 一样调整您的 DB 层

版本 3:“Web 2.x”:将应用程序从服务器移动到浏览器

  • 将您的应用程序逻辑从服务器端 (PHP) 移动到客户端 (JS)
  • 使您的服务器部分 (PHP) 仅作为数据访问或同步层
  • 如果您处于离线状态,请使用 HTML5 离线功能将您的数据访问替换为本地数据,并在在线时重新同步

哪个最好?

这取决于你有什么和你想要什么。如果您的大部分业务逻辑都在 PHP 中,那么将其移入浏览器可能会非常昂贵 - 请注意,这也会产生全新的安全噩梦。我个人不建议以这种方式移植,但如果后备数据库不太大,我建议将其用于新应用程序。

如果您选择保留您的 PHP 业务逻辑,那么 1 和 2 之间的决定通常是您的应用程序有多少 UI 的问题 - 如果它只有几个 CRUD 表单,1. 可能是个好主意 - 它绝对是最便携(在随身携带的意义上)。如果没有,请选择 2。

于 2012-09-04T22:57:39.400 回答
2

我曾为船舶使用过类似的系统。互联网在海洋中很昂贵,因此他们安装了本地 Web 服务器,并通过电子邮件进行数据库同步。

我们还创建了简单的 .exe 包,让没有经验的人可以安装系统或更新系统...

于 2012-09-04T22:56:03.343 回答