5

私はマルチプレイヤーゲームを持っていますが、ますます多くのプレイヤーが歌うにつれて、いくつかの奇妙なエラーが発生し始めました。

データベースへのクエリは1時間あたり約150万件ありますが、問題は、以前は問題がなかったため、他のクエリが完了する前に一部のクエリが実行されることであり、サインアップする人が増えるにつれてますます増えていると思います。 。

「sendTurn.php」と「removePlayer.php」の2つの主要なクラスがあります。プレーヤーが応答するのに時間がかかった場合、彼は追い出されます。しかし、追い出されているのと同じように、プレイヤーが自分の番をするとどうなるかという問題があると思います。

クエリがキューに入れられていることをどこかで読みましたが、それを完了するには各クラスで複数のクエリが必要なため、たとえば、「sendTurn.php」が途中で実行された場合(最初の1〜2回のクエリが実行された場合)可能性があります)他のクラス「removePlayer.php」がクエリの実行を開始しますか?

この場合、私は何ができますか?

編集:

phpmyadminを使用してDebianVPSサーバーでapace2を使用します

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 に答える