你好亲爱的 我是PHP和JavaScript新手。我创建了一个使用PHP/JavaScript的预订网站,但是当两个人或两个以上人选择导致并发生产冲突的时间段(用于预订)时,我遇到了问题。所以请帮助如何用PHP/JavaScript代码解决这个问题。如何解决PHP冲突?
回答
你好,亲爱的
你的问题是很常见的尤其是在预订系统。您可以采取一些措施来解决此问题,但如果没有首先查看代码,任何人都无法发布免费代码,因此现在我们只需向您提供想法。
我会假设访问者预订一个我将称之为“座位”的隐私。
预订座位
用户希望预订座位。将座位状态设置为保留。这将在其他用户屏幕上显示为已预订。预订将在30分钟内过期,因此访问者不再需要它。尽管要小心这种滥用,但访问者可以不断地“保留”所有座位,阻止任何人购买门票。
先到先得
让大家预订座位,谁支付它首先它,然后其他人必须重新挑选座位。这个选项不是非常用户友好的,但很容易实现。
@Tom Gullen:很好的答案,但是先到先得的服务是那么容易?!如果过程A更新了表示“SEAT BOOKED”的DB行,并且过程B同时进行,他们都将预订相同的座位。你使用SQL原子trasaction回滚?你可以解释一下,这很有趣。 – 2010-08-24 13:12:13
在付款之前,您根本不会更改座位的状态。付款完成后,在处理付款之前,请检查是否已预订,如果是,请重新选择座位,如果没有,请将其设置为正在购买,然后处理付款。如果付款失败,请将座位恢复为免费。这会吸引人们可能需要重新启动多次的流行事件。 – 2010-08-24 13:19:45
@Tom Gullen:对最后一条评论不能不同意。这正是我们在这里面临的问题。你怎么能确定我们避免了这一点:进程A读取行并看到“SEAT NOT BOOKED”,同时进程B(并发运行)执行相同的操作,并看到相同的“SEAT NOT BOOKED”,因此两个进程都去打开并更新具有相同值“BOOKED”的同一DB行,现在两名用户已预订相同的座位。重新排列DB行不能解决并发预订问题。这就是我要求解释的原因。 – 2010-08-24 13:33:44
- 1. Github - 如何解决冲突
- 2. LibGit2Sharp如何解决冲突?
- 3. 解决冲突
- 4. 解决Javascript冲突
- 5. 解决JQuery冲突
- 6. 解决JavaScript冲突
- 7. Subclipse冲突解决
- 8. 解决冲突svn
- 9. 如何解决冲突变更
- 10. 如何解决引导类名冲突
- 11. 如何解决与jQuery的冲突
- 12. 如何解决select2 3.5和4.0冲突
- 13. RestEasy的如何解决冲突@Path
- 14. antlr4 - 冲突的规则,如何解决
- 15. 如何解决与appcompat的actionbarSherlock冲突?
- 16. 如何解决恢复提交冲突
- 17. Set如何解决散列冲突?
- 18. 如何解决此SQL/C#DLL冲突
- 19. 冲突的Python包如何解决?
- 20. 如何解决@mixins命名冲突?
- 21. 如何解决转变/减少冲突?
- 22. 如何解决Android SDK版本冲突?
- 23. httpclient jar冲突。如何解决?
- 24. 如何解决TFS中的冲突?
- 25. 如何解决名称空间冲突?
- 26. LINQ如何解决命名冲突?
- 27. 如何在git pull后解决冲突?
- 28. 如何解决数据冲突
- 29. 如何解决此gemfile冲突
- 30. 如何解决Jquery的版本冲突
请向我们展示您的代码! – DLH 2010-08-24 12:59:52
不明白为什么这个问题应该关闭,这是一个问题如何解决简单预约系统中的数据冲突的措辞。 – 2010-08-24 13:03:22
@DLH:这不涉及更多的设计解决方案,而不是一个编码解决方案(即使他要求代码)。完整的代码是否可以在几行内处理? – 2010-08-24 13:08:28