我一直在开发PHP应用程序很长一段时间。 (基本)想法如下:用户可以使用块建立网页。这些块可以包含图像,文本等。每个块都有自己的选项。这些块是通过PHP在域驱动设计中定义的。PHP:最好的方法[序列化,对象,Redis]
我已经构建了应用程序来使用基于php的Controller来处理来自jQuery/Javascript前端的请求。每次用户编辑一个选项时,它都会发送给该控制器,该控制器从Redis和/或php会话中解密一组块(php对象),并设置编辑块的属性或添加/删除其中一个块块。这是为了执行域逻辑。
这很好,会为我自己开发。我从未考虑过比赛条件等因素。在推进产品的同时,我注意到人们失去了数据。我会解释发生了什么;
- 用户编辑的块的
- 按保存
- 的请求到控制器发出一个选项,
- unserialises收集和
- 集块基于它们的UUID
- 将块重新放回集合中,并且再次将集合序列化。
有情况下,可能会创建2个并发请求,这将会覆盖两个请求的编辑1。
我知道我需要重写这部分的应用程序。问题是什么是最好的方法。我可以;
- 实现一些JavaScript库,这将需要我很多工作,因为它需要我重写整个应用程序的一部分。此外,我没有很多实施基于JavaScript的解决方案的经验。但我不会踏入新的事物。我想javascript测试,以防止未来发生的问题发生,并启用跨浏览器测试
- 应用Redis /会话锁定,只允许控制器处理单个请求,并防止并发请求覆盖前一个请求中的数据集。这将降低并发请求和数据丢失的可能性,但并不完全。真正的互联网连接速度慢的人可能会在他们可能产生大量并发请求时失去连接。
我很好奇我可能会错过什么其他方法,或者如果我上面提到的两个之一就足够了。
许多优秀的问题都会根据专家的经验产生一定程度的意见,但对这个问题的回答往往基于意见,而不是事实,参考或具体专业知识。你可能想要找到一个开发论坛(也许[quora](http://www.quora.com/Computer-Programming?))来计算一般性。然后,当/如果您有特定的编码问题,请回到StackOverflow,我们很乐意提供帮助。 –