SA-MP Forums Archive
їUsar Query constantemente produce lag? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: їUsar Query constantemente produce lag? (/showthread.php?tid=611536)



їUsar Query constantemente produce lag? - DerxonTM - 07.07.2016

Buenas, llevo ya unos meses desarrollando mi gamemode de cero, pero me he planteado la posibilidad de para asegurar el guardado de datos de un usuario ante cualquier cambio, se envie un Query que actualice la cuenta a la base de datos directamente, de esta manera, no se guardarнa solo al desconectarse.

їUn Query cada cambio de dato (cuando pagan, retiran del cajero y demбs) producirнa lag o puedo hacerlo sin problema?

Muchнsimas gracias.


Respuesta: їUsar Query constantemente produce lag? - Unrea1 - 07.07.2016

Hazlo sin problema.

Pienso que una " query " usada de forma global (actualizaciуn de datos en una funciуn llamada cada rato) causa mбs lag, ya que si por ejemplo, cada 2 minutos se llama un callback global actualizando el dinero de los jugadores, a algunos usuarios no actualizarнan el dinero, por tanto es una pйrdida. Ahora, si se actualiza exactamente cuando la variable se cambia, serнa mбs rбpido lуgicamente mбs rбpido...


Re: Respuesta: їUsar Query constantemente produce lag? - DerxonTM - 07.07.2016

Quote:
Originally Posted by LatinZ
Посмотреть сообщение
Hazlo sin problema.

Pienso que una " query " usada de forma global (actualizaciуn de datos en una funciуn llamada cada rato) causa mбs lag, ya que si por ejemplo, cada 2 minutos se llama un callback global actualizando el dinero de los jugadores, a algunos usuarios no actualizarнan el dinero, por tanto es una pйrdida. Ahora, si se actualiza exactamente cuando la variable se cambia, serнa mбs rбpido lуgicamente mбs rбpido...
Gracias, entonces es efectivo que envie un Query de update cuando por ejemplo, un usuario pague 10 dуlares a otro para que se actualice al momento en la base de datos, їno?

Valoro tъ respuesta y ayuda, Ўmil gracias!


Re: Respuesta: їUsar Query constantemente produce lag? - SickAttack - 07.07.2016

Quote:
Originally Posted by DerxonTM
Посмотреть сообщение
Gracias, entonces es efectivo que envie un Query de update cuando por ejemplo, un usuario pague 10 dуlares a otro para que se actualice al momento en la base de datos, їno?

Valoro tъ respuesta y ayuda, Ўmil gracias!
No, es peor que guardar las cuentas con un timer (cada cierto tiempo). Si un jugador spamea /dardinero, cuantas consultas se haran? 20? Y si otros lo hacen al mismo tiempo?


Re: Respuesta: їUsar Query constantemente produce lag? - DerxonTM - 07.07.2016

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
No, es peor que guardar las cuentas con un timer (cada cierto tiempo). Si un jugador spamea /dardinero, cuantas consultas se haran? 20? Y si otros lo hacen al mismo tiempo?
Mi problema es que la ъnica forma en la que actualmente mis usuarios actualizarнan sus estadнsticas serнa al desconectar, que allн envнa la solicitud sin problema alguno, pero en caso de que cierre el servidor bruscamente sus cuentas no se actualizan. їMe recomiendas alguna forma para evitar esto?

Muchas gracias.


Respuesta: Re: Respuesta: їUsar Query constantemente produce lag? - Unrea1 - 07.07.2016

Quote:
Originally Posted by SickAttack
Посмотреть сообщение
No, es peor que guardar las cuentas con un timer (cada cierto tiempo). Si un jugador spamea /dardinero, cuantas consultas se haran? 20? Y si otros lo hacen al mismo tiempo?
Mmmh, no me habнa planteado ese problema desde mi punto de vista, supongo que aсadiendo un par de restricciones se solucionarнa. MySQL estб hecho para soportar varias consultas a la vez, haciendo un buen uso serнa rбpido (tambiйn depende del webhost).


Re: Respuesta: їUsar Query constantemente produce lag? - SickAttack - 07.07.2016

Quote:
Originally Posted by DerxonTM
Посмотреть сообщение
Mi problema es que la ъnica forma en la que actualmente mis usuarios actualizarнan sus estadнsticas serнa al desconectar, que allн envнa la solicitud sin problema alguno, pero en caso de que cierre el servidor bruscamente sus cuentas no se actualizan. їMe recomiendas alguna forma para evitar esto?

Muchas gracias.
Un timer que guarda las estadisticas de los usuarios (los necesarios). Dales una forma de guardar sus estadisticas tambien, como /guardarcuenta.

Quote:
Originally Posted by LatinZ
Посмотреть сообщение
Mmmh, no me habнa planteado ese problema desde mi punto de vista, supongo que aсadiendo un par de restricciones se solucionarнa. MySQL estб hecho para soportar varias consultas a la vez, haciendo un buen uso serнa rбpido (tambiйn depende del webhost).
Eso no significa que ejecutar una consulta cada vez que un usuario utiliza /dardinero, con mas razon si /dardinero esta limitado a $10,000.


Respuesta: їUsar Query constantemente produce lag? - wharlos - 08.07.2016

Disculpen que interrumpa este post yo preguntando algo, pero va referido a la cuestiуn de que por ejemplo haya un crash en el servidor con usuarios online y se cierre el samp-server.exe y no se guarden las cuentas, ya yo intente colocando un bucle en OnGameModeExit pero no funciono y me preguntaba si alguien tuviera el script bien hecho para evitar ese problema, y tambiйn uso mysql


Re: їUsar Query constantemente produce lag? - lucesita - 08.07.2016

Yo creo que un timer que actualize las cuentas cada 1 minuto es la mejor solucion. Realmente las queries son pesadas y tenes que intentar evitarlas en lo posible. No es para ponerse obsesivo con el tema, pero lo mejor es utilizarlas lo minimo posible

Yo creo que la mejor solucion es hacer queries cuando:
- Se desconecta
- El server se cierra (en ongamemodeexit, cuando se cierra sin crash por supuesto)
- Cada 1 minuto en un timer.

Por ejemplo:
PHP код:
new updateAccountsTimer = -1;
public 
OnGameModeInit() {
    
updateAccountsTimer SetTimer("updateAllAccounts"60000true);
}
public 
OnPlayerDisconnect(..) {
    
updateAccount(player);
}
public 
OnGameModeExit() {
    
updateAllAccounts();
    if (
updateAccountsTimer != -1KillTimer(updateAccountsTimer);
}
forward updateAllAccounts();
public 
updateAllAccounts() {
    foreach(
Playeri) {
        
updateAccount(i);
    }
}
stock updateAccount(player) {
    
mysql_query(..);




Re: їUsar Query constantemente produce lag? - KennySec - 08.07.2016

Lo mбs recomendable es guardar las cuentas de todos los usuarios cada vez que se desconecten, cuando el servidor se cierre y cada cierto tiempo mientras estй abierto. Depende tambiйn de las especificaciones de tu VPS.
Si tenйs un VPS de 1GB de ram y una conexiуn de al menos 100mbps puede guardar 100 o incluso 200 usuarios sin problema alguno, y esos son los VPS mбs comunes hoy en dнa.