2011-08-22 34 views
2

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

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

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

在此之前我根本没有任何问题,但由于端口的庭院是一个容易受到很多干扰因素的地方,所以信号可能会丢失,因为工作的应用需要有Wi-Fi连接。当它失去与php服务器的通信时,应用程序停止工作。

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

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

+0

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

回答

1

我假设您至少有一些客户端设备的控制权,因此可以确定他们使用的是现代浏览器。因此,您可以使用HTML5数据存储(Javascript中的localStorage对象)在客户端设备上记录数据。当他们按下按钮时,填写表格或其他内容,而不是上传数据到服务器,使用Javascript将其写入本地存储。完成之后,请参阅是否可以将本地存储的内容上载到服务器(使用Ajax)。如果可以的话,太棒了,将它从本地存储中移除;如果没有留下来进行下一次尝试。

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

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

做这种方式的另一个优点是,即使你是在范围之内,但在较慢的链接时,用户不必等待上传到下一个数据输入操作前完成。