我的应用程序的规范指出,两个用户必须能够同时在Web应用程序的相同记录上工作,而不会破坏彼此的数据(除非他们每个修改相同的字段,那么它将是最后一个可以节省胜利。)这是一个医疗系统,可以想象的是,计费人员可以在记录的同时更新另一部分记录。何时应该清除会话变量?
因此,当用户保存表单时,系统应该只更改用户实际更改的数据库中的值。因为我正在使用CakePHP,所以我试图在发送表单数据之前在PHP的一面处理这个问题,而不是用JavaScript来完成。
我的第一个想法是在保存之前检查数据库中的值,只更改不相同的值。但是,如果用户A在用户B打开它之后保存表单,然后用户B保存表单,则用户A的更改将被用户B表单中的旧数据覆盖。
我的下一个想法是在用户的会话中保存表单的值。因此,当他打开表单时,数据会存储在会话中,只有从会话中更改的值才会在数据库中更新。因此,会话将在其中序列化$ old_data。
这里的问题是,如果用户试图同时打开两个记录然后保存,会导致悲伤。所以,我需要通过记录ID来存储会话数据。
而且,这导致我最终的问题。当用户保存表单时,我可以从会话中取消设置数据(如果再次呈现相同的记录,则立即重新获取数据)。但是,这并不涉及用户不保存表单时的情况。如果他们打开表格阅读,然后离开,他们的会议将逐渐充满碎片。
那么,什么时候最好的时间和方法清理会话垃圾而不清除会话中实际需要的数据呢?
只是一个说明 - 因为这是一个Web应用程序,而不是一个网站,我们的用户通常整天都在应用程序。所以,如果他们正在处理数十个记录,事情可能会变得非常疯狂。 – 2011-03-27 19:37:09