2012-04-28 18 views
5

Daha fazla oyuncu daha fazla şarkı söyledikçe bazı garip hatalar üretmeye başlayan çok oyunculu bir oyunum var.mysql sorgu kuyruğu?

Veritabanında/saatte yaklaşık 1.5 milyon sorgu var ve bence sorun, bazı sorgular tamamlanmadan önce bazı sorgular tamamlanmaya başlandı, çünkü daha önce herhangi bir sorunum olmadı ve daha fazla aldım daha fazla kişi kayıt olur.

İki ana sınıfım var: "sendTurn.php" ve "removePlayer.php". Bir oyuncu cevap vermek için uzun sürdü, o attı. Ama sanırım sorun, bir oyuncu sıfıra düştüğünde, bir oyuncu sıranın başına geldiğinde ne olur?

Sorguların sıraya konulduğu bir yerde okudum, ancak her bir dersi tamamlamak için birkaç sorguya ihtiyaç duyduğundan, örneğin, "sendTurn.php" öğesinin yarıya bittiğinde (ilk önce 1-2 sorgular) "removePlayer.php" nin diğer sınıfının sorgularını yürütmeye başlayacağı?

Bu durumda, ne yapabilirim?

Şimdiden çok teşekkürler!

Düzenleme: phpmyadmin ile bir debian VPS sunucuda apace2 kullanmak

,

+0

kullandığınız API ne tür? mysql, mysqli, mysql-pdo? –

+0

Bir işlemde bu sorguları sarmaya ne dersin? – DCoder

+0

Cevabınız için teşekkür ederiz. Bir debian VPS sunucusunda apace2 kullanıyorum, phpmyadmin – BlackMouse

cevap

3

bu teknik bir yerine bir mimari soru daha, çünkü tam bir mimari gözden olacaktır gerçek bir çözüm gibi görünüyor bir. Bu sorunu tamamen ortadan kaldırabilirsiniz ancak kullanmam için yeterli bilgi yok. Ancak, , hassas işlemlerinin tam kapsamı için erişildiklerinde hassas tabloları kilitleyebilir. Bir çok oyuncu aynı fonksiyonlara ulaşmaya çalıştığında bir performans artışı olacak, ama en azından işe yarayacak.

böyle bir işlevi

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

MYSQL örneği için Örneğin

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

+0

Teşekkürler, üzerinde okuyacağım. – BlackMouse