我有一个多人游戏,随着越来越多的玩家被烧毁,已经开始产生一些奇怪的错误.
对于数据库/小时大约有150万个查询,我认为问题是有些查询在其他查询完成之前就已经执行了,因为之前我没有遇到任何问题,随着更多人注册,我越来越多.
我有两个主要类:"sendTurn.php"和"removePlayer.php".如果一名球员花了很长时间做出回应,他就会被踢出局.但是我猜这个问题是如果一个球员轮到他的话会发生什么,就像他被踢出去一样?
我在某处读到了查询被放入队列中,但由于每个类需要几个查询来完成它,所以有可能在例如"sendTurn.php"中途完成时(完成前1-2个查询) )另一个类"removePlayer.php"将开始执行其查询?
在这种情况下,我该怎么办?
编辑:
我在debian VPS服务器上使用apace2,使用phpmyadmin
小智 3
看起来真正的解决方案是完整的架构审查,因为这更多是一个架构问题而不是技术问题。您可以完全避免这个问题,但没有足够的信息供我使用。但是,只要敏感表的敏感进程的完整范围被访问,您就可以锁定敏感表。当很多玩家尝试达到相同的功能时,性能会受到影响,但至少它会起作用。
例如对于这样的函数
*LOCK TABLE*
Do queries
Do queries
Do queries
Do queries
*UNLOCK TABLE*
Run Code Online (Sandbox Code Playgroud)
MYSQL 示例:http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |