2012-04-28 81 views
5

我有一款多人遊戲,隨着越來越多玩家的興趣開始產生一些奇怪的錯誤。mysql查詢隊列?

對於數據庫/小時,大約有150萬次查詢,而且我認爲問題在於有些查詢在其他查詢完成之前得到執行,因爲之前沒有任何問題,而且越來越多更多人註冊。

我有兩個主要類:「sendTurn.php」和「removePlayer.php」。如果一名球員需要很長的時間來回應,他會被踢出。但是我猜這個問題是如果一個球員輪到他出現什麼情況,就像他被踢出去一樣?

我在某處讀取查詢被放入隊列中,但因爲它需要幾個querys在每個類中完成它,是否有可能,例如,「sendTurn.php」中途完成(完成第一個1-2查詢)其他類「removePlayer.php」將開始執行其查詢?

在這種情況下,我該怎麼辦?

非常感謝提前!

編輯:

我用apace2一個Debian VPS服務器上,與phpMyAdmin

+0

什麼樣的API您使用的是? mysql,mysqli,mysql-pdo? – 2012-04-28 11:47:13

+0

如何在事務中包裝這些查詢? – DCoder 2012-04-28 11:49:19

+0

感謝您的回覆。我在debian VPS服務器上使用apace2,使用phpmyadmin – BlackMouse 2012-04-28 11:49:30

回答

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

+0

謝謝,我將對其進行了解。 – BlackMouse 2012-04-28 12:45:45