动态状态更新,无需数据库交互


Dynamic status update without database interaction

我正在开发一个显示系统创建的实时状态/阶段的系统。

示例-:如果我填写了一个托管表单,那么在我的表单上应该显示系统的状态。就像进度条中创建的域、托管的文件等。我想在不使用数据库的情况下实现这一点。

注意:所有操作都将在不同的系统上执行,我的托管表单在不同的平台上。

:可以同时填写多个表格。

我尝试过的

  1. 将步骤写入数据库并从中读取
  2. 对特定功能进行卷曲张贴。但在这种情况下,我必须使用DB

我正在寻找一种不需要数据库交互的方式,并且我可以在填写表单后动态查看状态。

有1种解决方案:

  1. 使用AJAX从安装有API软件的服务器发送和接收信息

我想这就是你想要做的。

请随时纠正我对该问题的理解,但以下是我目前的看法。

  1. 您有一个具有多阶段表单的网站。因此,用户填充第一个,然后发送它,并获得下一个要填充的
  2. 您还有一个可能运行PHP的web服务器,用于处理用户交互。因此,每当用户填写表单时,服务器应用程序都会继续进行,并为用户提供下一个表单
  3. 此外,还有多个外部服务器和服务,PHP应用程序根据用户提供的信息向它们发出命令
  4. 无论何时,您都希望显示来自外部服务的流程信息
  5. 最后,如果存在较轻的数据库解决方案,那么您就不想使用太重的数据库

如果到目前为止我已经掌握了正确的事实,可能会有一个合适的解决方案来帮助你。

首先,值得一提的是,PHP有自己的会话机制。它的数据存储默认为平面文件,这可能适合您使用,也可能不适合您使用。然而,它几乎不需要配置或设置,并且提供了持久存储,所以在我看来,这是迄今为止最简单的选择。

请注意,如果要存储的信息量很小,您可以完全绕过应用程序数据存储,而使用cookie。阅读表单提交,在PHP过程中更新,并相应地发送更新cookie作为响应的一部分。您可以对数据进行加密,以使用户更难更改数据。

最后,还有一个名为缓存的选项。在使用PHP时,有多种技术可以实现这一点。例如:xcache和APC。这些将信息存储在RAM中,这显然有其缺点,因为数据基本上可以在任何给定的时间消失——不过你可以控制这一点。

无论选择数据存储,总体思路如下:

  • 当用户第一次与您的服务交互时,创建一个会话标识符和一个适当的cookie,以便稍后识别用户
  • 当用户填写并发送第一个表单时,读取信息并将其存储在缓存或cookie中。在缓存中存储和读取信息时,使用用户使用的会话标识符对其进行前缀或命名。这样,在任何给定的时间都可以有多个用户使用该服务!完成后,发送第二张需要填写的表格
  • 当用户最终发送第二个表单时,从缓存或cookie中读取给第一个表单的信息。现在,如果信息丢失,则说明填充过程中出现了错误(或者缓存由于时间长或cookie过期时间而无效——您也需要考虑这些因素)
  • 只要事情进展顺利,就从表格中收集信息。只要你有足够的信息,就向外部服务发出请求,让事情真正发生
  • 现在,最后。您可以从客户端进行定期的ajax请求。因此,您不仅会收到发送的表格,还会收到偶尔的"流程如何?"查询。现在,每当您从浏览器收到这样的请求时,您都可以通过会话标识符来识别用户,并从PHP应用程序向外部服务发出调用,询问任何类型的状态。然后,您只需将信息转发到一直在等待答案的浏览器

请注意,您可能必须将服务特定信息存储在缓存中才能执行此操作。

然而,这种设置有效地使您能够在不透露其背后服务的情况下控制PHP应用程序中的数据流。它也足够轻,可以进行开发,因为它不需要额外的外部软件来进行短期数据存储。