5

我有一个多人游戏,随着越来越多的玩家开始抱怨,它开始产生一些奇怪的错误。

数据库/小时大约有 150 万次查询,我认为问题是一些查询在其他一些查询完成之前执行,因为我之前没有任何问题,而且随着越来越多的人注册,我越来越多.

我有两个主要类:“sendTurn.php”和“removePlayer.php”。如果一名球员反应时间过长,他就会被踢出局。但我想问题是如果一个球员轮到他,就在他被踢出局的时候会发生什么?

我在某处读到查询被放在一个队列中,但由于它需要在每个类中进行多个查询才能完成它,是否有可能例如“sendTurn.php”完成一半(完成前 1-2 个查询) 其他类“removePlayer.php”将开始执行其查询?

在这种情况下,我该怎么办?

编辑:

我在 debian VPS 服务器上使用 apace2,使用 phpmyadmin

4

1 回答 1

3

看起来真正的解决方案将是完整的架构审查,因为这更多是架构问题而不是技术问题。您可以完全避免这个问题,但没有足够的信息供我使用。但是,您可以在敏感表的全部范围内访问敏感表时锁定它们。当许多玩家尝试达到相同的功能时,性能会受到影响,但至少它会起作用。

例如对于这样的功能

*LOCK TABLE*
Do queries
Do queries
Do queries
Do queries
*UNLOCK TABLE*

MYSQL 示例:http ://dev.mysql.com/doc/refman/5.0/en/lock-tables.html

于 2012-04-28T12:25:51.450 回答