Porque podria pasar esto? -
FelipeAndres - 26.12.2015
Hola ultimamente he recibido ataques seguidos haciendo que mi server se reinicie a cada rato, y lo que pasa, es qe las cuentas de los jugadores se desconfiguran, por ejemplo a algunas cuentas se les desconfigura el campo de score, osea tiene 1200 de score y se le cambia a 30 de score, solo es un ejemplo, pero es lo que pasa con los demas campos, les cambia el valor.
Pero esto solo pasa ahora que el server se reinicia a cada rato o.O
uso sqlite, no se si serб porque en la tabla de usuarios hay muchos registrados o cuando intentan loguearse todos de golpe se bugean.
pero en las demas tablas de clanes, casas, esto no pasa.
no se si sera recomendable cambiarme a mysql u.u
alguien que tenga experiencia con esto? se agredeceria mucho
muchas gracias
Re: Porque podria pasar esto? -
lutheycallme - 26.12.2015
Para poder ayudarte mejor se necesitaria que nos dieras un poco mбs de informaciуn. Prueba usando crashdetect y mostrбndonos que aparece en tu server_log.txt.
Respuesta: Porque podria pasar esto? -
FelipeAndres - 26.12.2015
gracias
ya tenia instalado crashdetect y estuve revisando pero no es nada de eso, tampoco es lo que dije que el server se reinicia, sino que un ataque, o no se si sera ataque pero hace que todos los players se le desconecte pero el server sigue encendido... pero ese no es el problema,
lo que intento solucionar es que a los jugadores se les desconfigura sus cuentas como dije arriba, las columnas guardan otros valores, me imagino que debe ser porque como se desconectan todos a la vez el server tiene que guardar todas esas estadisticas y quizas se colapse o bugeen, quiero ver la forma de evitar eso :/
Respuesta: Porque podria pasar esto? -
Zume - 26.12.2015
Pasa que no seteas las variables al conectarse o desconectarse a lo mejor, o cargas de forma incorrecta (ya sea que tengas un sistema de busqueda de cuenta por ID y setee ID incorrecto o no se resetee y por cuestiуn de tiempo llegue tarde tomando otro valor)
Respuesta: Porque podria pasar esto? -
FelipeAndres - 26.12.2015
Debe ser por el.tiempo porqe las cuentad siempre las guarda bien y las guardo buscando el nombre
Pero como son muchos jugadores qe deben guardarse al mismo tiempo quiza eso hace qe se bugeen algunas cuentas
Cuando pasa este ataque todos los jugadores se desconectan por la razon crash, no se sera bueno poner una condicion qe para las estadisticas no se.guarden cuando se desconecten por esta razon
Respuesta: Porque podria pasar esto? -
FelipeAndres - 26.12.2015
Al guardar la cuenta de un jugador no uso db_free_result, serб por eso?
Код:
funcion GuardarCuenta(playerid)
{
new Query[500];
format(Query,sizeof(Query), "UPDATE `USERS` SET score='%d', dinero='%d'... otros campos WHERE `NAME` = '%s' COLLATE NOCASE",
score[playerid],
dinero[playerid],
....otras variables,
DB_Escape(nombre(playerid)));
db_query(basedatos, Query);
tendria que usar aqui db_free_result??
return 1;
}
Re: Respuesta: Porque podria pasar esto? -
Miguel - 26.12.2015
Quizб suceda porque estбs colocando comillas simples a valores que no son cadenas, aunque no estoy seguro... no tengo mucho conocimiento de SQL.
Yo probarнa:
pawn Код:
format(Query,sizeof(Query), "UPDATE `USERS` SET score=%d, dinero=%d... otros campos WHERE `NAME` = '%s' COLLATE NOCASE",
score[playerid],
dinero[playerid],
....otras variables,
DB_Escape(nombre(playerid)));
db_query(basedatos, Query);
Hasta donde se no hace falta usar free_result porque no estбs almacenando el resultado de la consulta.
Respuesta: Porque podria pasar esto? -
FelipeAndres - 27.12.2015
Viendo otros post decian que la memoria de igual forma se almacenaba y habia que liberarla siempre que se usara db_query, pero otros decian que solo habia que usar db_free_result cuando se usaba SELECT algo asi...
Alguien qe pueda dejar clara esa duda por favor gracias
Respuesta: Porque podria pasar esto? -
DesingMyCry - 27.12.2015
En SA-MP (funciones nativas), las funciones de SQLite siempre quedan en memoria, independiente que tipo de query se enviй.
Porque ocurre esto? De esta manera, se puede saber si se ejecutу correctamente u ocurriу algъn problema con ella (por ejemplo, error de sintaxis).
La soluciуn es tan simple como molesta. Cada vez que se use la funciуn nativa "db_query" se deberб liberar el poco de memoria que genera.
Una forma un poco menos molesta serнa crear una funciуn (tipo "db_query2") que libere la memoria de forma automбtica y se use solo con "UPDATE", "INSERT" y "DELETE".