【问题标题】:PHP mobile data collectorsPHP 移动数据收集器
【发布时间】:2011-11-01 09:02:55
【问题描述】:

我在一家开发用于管理港口运营的软件的港口公司工作。我目前正在为数据收集器开发一个项目。

Data Collector 是一种便携式设备,用于收集信息,然后将其用于特定系统、库存控制、消耗控制、一般报告。

没错,我正在用php开发一个软件,以便操作员可以管理集装箱港口和港口庭院中发生的其他操作。

到那时我完全没有问题,但是由于港口的院子是一个受很多干扰因素的地方,可能会出现信号丢失,因为工作的应用程序需要有wi-fi连接。当它失去与 php 服务器的通信时,应用程序将停止工作。

我们曾考虑在每个收集器上安装一个 apache 服务器,但意识到这是不可行的。

所以我来问你一个建议,如果发生可能的信号丢失,我会保存用户输入的数据。

【问题讨论】:

  • 是否可以创建一些您的移动用户可以使用的 android/iOS 应用程序。我知道您可以将数据保存在本地,并且只要有可能,它就可以与服务器增量发送更新(同步)。这样即使信号丢失,数据仍然会保存在设备本地,并可以在可能的情况下再次同步。

标签: php mobile connection port loss


【解决方案1】:

我假设您至少可以控制客户端设备,因此可以确定它们使用的是现代浏览器。因此,您可以使用 HTML5 数据存储(Javascript 中的 localStorage 对象)在客户端设备上记录数据。当他们按下按钮、填写表格或其他内容时,而不是将数据上传到服务器,而是使用 Javascript 将其写入本地存储。完成后,看看是否可以将本地存储的内容上传到服务器(使用 Ajax)。如果可以,很好,将其从本地存储中删除;如果不留在那里等待下一次尝试。

我认为,您需要添加一个按钮来刷新任何剩余的数据,并训练他们在返回基地时使用它,否则数据将不会上传。那个按钮,也许是整个界面,需要一个成功的指示,也许还有多少还没有上传。或者可能让数据收集页面定期尝试上传任何未完成的数据。如果他们(尝试)转到其他数据上传未完成的页面,就会出现问题 - 您可以通过在离开页面时发出一个 javascript 事件来在某种程度上警告他们,该事件可以告诉他们“数据上传未完成”。因为存储是永久的,所以甚至可以关闭浏览器或关闭设备,然后在范围内重新打开数据采集页面以完成上传 - 主要问题是确保这确实完成的人为因素.

此外,您还需要一种可靠的方法来检查两端是否同意数据已上传。仅仅依靠 Ajax 调用的成功响应或缺少响应是不够的,因为即使数据已成功上传,您也可能永远看不到它。一种方法可能是在浏览器端使用 ID 标记数据(可能基于会话 ID 和时间),这样如果您没有从服务器得到肯定的响应,您认为它在浏览器端失败了,但是如果它实际上没有失败,则服务器已经存储了 id,因此稍后再次上传的相同数据将被视为已经完成,因此不会被处理两次。

这样做的另一个好处是,即使您在范围内但链接速度较慢,用户也不必等待上传完成即可继续下一个数据输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2021-11-21
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多