2012-04-28 20 views
5

Tengo un juego multijugador que ha comenzado a generar algunos errores extraños a medida que más y más jugadores se han chamuscado.cola de consulta de mysql?

Hay alrededor de 1,5 millones de consultas en la base de datos/hora, y creo que el problema es que algunas consultas se han completado antes de que se hayan completado otras consultas, ya que no tuve ningún problema antes y cada vez recibo más más personas se registran.

Tengo dos clases principales: "sendTurn.php" y "removePlayer.php". Si un jugador ha tardado en responder, es expulsado. Pero supongo que ese problema es ¿qué pasa si un jugador hace su turno, justo cuando lo están echando?

Leí en alguna parte que las consultas se pusieron en una cola, pero dado que requieren varias consultas en cada clase para completarla, ¿es posible que cuando, por ejemplo, "sendTurn.php" está a medio hacer (hecho el primero 1-2 consultas) que la otra clase "removePlayer.php" comenzará a ejecutar sus consultas?

En este caso, ¿qué puedo hacer?

¡Muchas gracias de antemano!

Editar:

utilizo apace2 en un servidor Debian VPS, con phpmyadmin

+0

¿Qué tipo de API está utilizando? mysql, mysqli, mysql-pdo? –

+0

¿Qué tal envolver esas consultas en una transacción? – DCoder

+0

gracias por la respuesta. Uso apace2 en un servidor VPS de Debian, con phpmyadmin – BlackMouse

Respuesta

3

Se ve como una solución real sería una revisión de la arquitectura completa, ya que esto es más una cuestión de arquitectura en lugar de un técnico uno. Es posible que pueda evitar este problema por completo, pero no hay suficiente información para usar. Sin embargo, usted podría bloquear las tablas confidenciales cada vez que se acceda a ellas en toda la extensión de su proceso confidencial. Habrá un golpe de rendimiento cuando muchos jugadores intenten alcanzar las mismas funciones, pero al menos funcionará.

Por ejemplo para una función de tales ejemplos

*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

Gracias, leeré sobre él. – BlackMouse