我正在用 PHP 开发一个 UI 框架。这个想法与.NET 平台非常相似。开发了不同的 php 类来呈现 DOJO 控件。简而言之,该框架生成 Javascript 代码以在客户端呈现 DOJO UI 控件。过程如下:
第一个请求:
- URL GET 请求到达服务器。
- 服务器执行加载表格的相关脚本。
- 调用每个子控件的渲染函数(这会生成 javascript 代码)
- 序列化整个 FORM 对象并将其保存到 SESSION 文件中。
- 将 JS 代码输出到客户端。
后续请求:
- FORM 回发请求到达服务器。
- 服务器从 SESSION 文件加载以前的状态(使用反序列化)。
- 使用用户提交的值更新状态对象。
- 调用事件处理程序。
- 将当前状态保存在 SESSION 文件中。
- 向客户端呈现响应。
上述过程非常适合来自同一会话的单个请求。我需要一次处理来自同一会话的多个请求。
问题:
假设分别来自同一会话 R1 和 R2 的两个请求。R1 需要 10 秒才能完成,而 R2 需要 3 秒。当 R1 处于 5 秒时,R2 来并在 R1 处于 8 秒时更新状态文件。之后,R1 在 2 秒后再次更新状态文件。
问题是请求 R2 对状态文件所做的更改丢失了。
如何在 PHP 中处理上述场景?在 UI 框架中,我可以遵循任何设计模式来进行状态管理吗?