Enviar respuesta 
[Modulo] MySQL Threads 1.2
Autor Mensaje
Destro Sin conexión
Anti-cheat Team


Buen Tutorial Plugin developer Pensador Plugin popular
Mensajes: 820
Registro en: Oct 2013
Reputación: 4
Mensaje: #31
RE: [Modulo] MySQL Threads 1.2
fijate si se llama a la funcion handler cuando haces las consultas en plugin_end()


Código PHP:
new debug_mysql

public plugin_end()
{
   
debug_mysql true
   
   
for(id ........ <= maxplayers)
       
save_data(id)
}

save_data(id)
{
    ......

    
mysql_query(cn_handler" query_handler", .....) 
}

public 
query_handler(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
debug_mysql)
    {
         new 
quey[512]

         
mysql_get_query(query511);

         
log_to_file("mysql_debug.log""consulta: [%s]"query)

    }

    .......




26/01/2017 12:23 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Federicomb Sin conexión
Miembro Destacado


Plugin developer Trebol verde Trebol de oro 1k
Mensajes: 1,037
Registro en: Jan 2014
Reputación: 24
Mensaje: #32
RE: [Modulo] MySQL Threads 1.2
(26/01/2017 10:39 AM)Sugisaki escribió:  el modulo esta genial pero tiene un pequeño detalle, aveces cuando se laggea la base de datos o hace muchas consultas (en plugin_end con 32 players), aveces manda datos nulos, he visto en el phpmyadmin que el nombre y los demas campos estan vacios, a algunos usuarios se les reinician los datos

Tampoco se pueden liberar los handle en plugin_end, yo supuse que era así y no los libero. Crashea el servidor si quiero hacer eso.

Yo particularmente no tengo problemas con mis guardados, proba en todo caso haciéndolos antes de plugin_end o a su vez deja que lo haga la misma forward client_disconnect, es más recomendable.

Believe, be yourself and don't hold on to just one dream ❤


(Este mensaje fue modificado por última vez en: 26/01/2017 01:14 PM por Federicomb.)
26/01/2017 01:14 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Sugisaki Sin conexión
Miembro Destacado


Medalla de aportes Trebol purpura 1k
Mensajes: 1,077
Registro en: Jul 2014
Reputación: 21
Mensaje: #33
RE: [Modulo] MySQL Threads 1.2
(26/01/2017 01:14 PM)Federicomb escribió:  
(26/01/2017 10:39 AM)Sugisaki escribió:  el modulo esta genial pero tiene un pequeño detalle, aveces cuando se laggea la base de datos o hace muchas consultas (en plugin_end con 32 players), aveces manda datos nulos, he visto en el phpmyadmin que el nombre y los demas campos estan vacios, a algunos usuarios se les reinician los datos

Tampoco se pueden liberar los handle en plugin_end, yo supuse que era así y no los libero. Crashea el servidor si quiero hacer eso.

Yo particularmente no tengo problemas con mis guardados, proba en todo caso haciéndolos antes de plugin_end o a su vez deja que lo haga la misma forward client_disconnect, es más recomendable.

si lo tengo con client_disconnect pero cuando se cambia de mapa se llama 32 veces (depende de jugadores) client_disconnect y a 1 o 2 players se les reinician/borran los datos y también me sucedió lo del "free handled" y lo quite, crasheaba el servidor al cambiar de mapa

Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
Image

(14/08/2015 10:15 PM)Sugisaki escribió:  "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

26/01/2017 02:47 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
CSAxel Sin conexión
Miembro Héroe


Plugin developer 1k
Mensajes: 1,837
Registro en: Dec 2013
Reputación: 40
Mensaje: #34
RE: [Modulo] MySQL Threads 1.2
No es "tan" recomendable guardar los datos en plugin_end();
Lo más recomendable es llamar a la función cuando se desconecta un jugador, ya que al cambiarse de mapa, se "desconectan" y se vuelven a conectar.
Yo particularmente nunca tuve problemas con este módulo y al guardado (Y tengo como más de 100 datos que guardar mas o menos [Exagerando])

Lo que podrías hacer es usar un task (Flag D creo que era) con 25 segundos antes de que finalice el mapa, se le guarden los datos al jugador!

También puede ser el delay del guardado, entre que guarda y vuelve a cargar los datos al jugador puede también ser un problema!
27/01/2017 01:41 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Federicomb Sin conexión
Miembro Destacado


Plugin developer Trebol verde Trebol de oro 1k
Mensajes: 1,037
Registro en: Jan 2014
Reputación: 24
Mensaje: #35
RE: [Modulo] MySQL Threads 1.2
(27/01/2017 01:41 PM)CSAxel escribió:  No es "tan" recomendable guardar los datos en plugin_end();
Lo más recomendable es llamar a la función cuando se desconecta un jugador, ya que al cambiarse de mapa, se "desconectan" y se vuelven a conectar.
Yo particularmente nunca tuve problemas con este módulo y al guardado (Y tengo como más de 100 datos que guardar mas o menos [Exagerando])

Lo que podrías hacer es usar un task (Flag D creo que era) con 25 segundos antes de que finalice el mapa, se le guarden los datos al jugador!

También puede ser el delay del guardado, entre que guarda y vuelve a cargar los datos al jugador puede también ser un problema!

Exactamente, al igual que él tengo guardo muchisimos datos y jamás he tenido problemas. El tema del delay que exista es otra cosa, pero perder datos por suerte no. Deberías probar otro método o revisar un poquito más a fondo que capaz tengas algún error y no te des cuenta.



El módulo permite mantener una conexión permanente (evitas conectarte en cada consulta) y por más que el servidor (remoto o local) te cierre la conexión, el mismo módulo se intenta reconectar, eso lo diferencia del módulo original de MySQL que no se reconectaba (desconozco si en 183 lo han mejorado).

Te dejo un ejemplo de como yo lo uso y me es efectivo:
Código PHP:
new Handle:g_SqlTuple;
new 
Handle:g_SqlConnect;

new const 
MYSQL_HOST[]         = "127.0.0.1";
new const 
MYSQL_USER[]         = "root";
new const 
MYSQL_PASS[]         = "pass";
new const 
MYSQL_DATABASE[]     = "database";

public 
plugin_init()
{
    new 
sError[64];
    new 
iError;

    
g_SqlTuple mysql_makehost(MYSQL_HOSTMYSQL_USERMYSQL_PASSMYSQL_DATABASE);
    
g_SqlConnect mysql_connect(g_SqlTupleiErrorsErrorcharsmax(sError));

    if(
iError) {
        
log_to_file("sql_error.log""[MySQL] Error de conexión con %s. [%d]- [%s]"MYSQL_HOSTiErrorsError);
        
set_fail_state("[MySQL] Error de conexión con %s. [%d]- [%s]"MYSQL_HOSTiErrorsError);
        return;
    }

    
mysql_performance(757510);

    
mysql_query(g_SqlConnect"MySQL_QueryHandler""SELECT COUNT(id) FROM table;");
}

public 
MySQL_QueryHandler(const failstate, const error[], const error_num, const data[], const size, const Float:queuetime) {
    if(
failstate != TQUERY_SUCCESS) {
        
log_to_file("sql_error.log""MySQL_QueryHandler - failstate:[%s] - num:[%d] - error:[%s]"failstate == TQUERY_CONNECT_FAILED "TQUERY_CONNECT_FAILED" "TQUERY_QUERY_FAILED"error_numerror);
        return;
    } 

    if(
mysql_num_results() > 0) {
        
server_print("IDs: %d"mysql_read_result(0));
    }


Con esto evitas múltiples conexiones innecesarias (por cada consulta) a la base de datos y una mejora de velocidad de respuesta del servidor.

En vez de usar el tuple (g_SqlTuple) usas el connect (g_SqlConnect). Seguramente ya lo sepas o no Thinking, capaz a alguien le pueda servir esta información. IfyouknowApproved

Believe, be yourself and don't hold on to just one dream ❤


27/01/2017 04:13 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Sugisaki Sin conexión
Miembro Destacado


Medalla de aportes Trebol purpura 1k
Mensajes: 1,077
Registro en: Jul 2014
Reputación: 21
Mensaje: #36
RE: [Modulo] MySQL Threads 1.2
(27/01/2017 01:41 PM)CSAxel escribió:  No es "tan" recomendable guardar los datos en plugin_end();
Lo más recomendable es llamar a la función cuando se desconecta un jugador, ya que al cambiarse de mapa, se "desconectan" y se vuelven a conectar.
Yo particularmente nunca tuve problemas con este módulo y al guardado (Y tengo como más de 100 datos que guardar mas o menos [Exagerando])

Lo que podrías hacer es usar un task (Flag D creo que era) con 25 segundos antes de que finalice el mapa, se le guarden los datos al jugador!

También puede ser el delay del guardado, entre que guarda y vuelve a cargar los datos al jugador puede también ser un problema!

en el tema del delay lo tengo arreglado con un bool pero el detalles es que aveces cuando le da el ataque a la base de datos el modulo manda una consulta nula
probe entre el modulo oficial y este y el unico detalle es ese

gracias por sus respuesta

Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
Image

(14/08/2015 10:15 PM)Sugisaki escribió:  "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

(Este mensaje fue modificado por última vez en: 30/01/2017 12:43 AM por Sugisaki.)
30/01/2017 12:42 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
LuKks Sin conexión
Miembro Sr.


Plugin developer
Mensajes: 456
Registro en: Jul 2014
Reputación: 18
Mensaje: #37
RE: [Modulo] MySQL Threads 1.2
Recomiendo, guardar los datos en el momento en el que cambian. Por ejemplo, guardas los frags y muertes de cada jugador? pues, apenas muera actualizarlo en la base de datos, lo mismo cada vez que mate a alguien para los frags.
Suena "pesado" pero en realidad no es nada. Son 32 jugadores máximo realizando algunas acciones a la vez, es absolutamente nada. Sin miedo!
De esta forma, la tabla está actualizada con los últimos movimientos y no hay necesidad de guardar nada en client_disconnect (mas que su fecha de desconexión quizás).

30/01/2017 12:51 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Federicomb Sin conexión
Miembro Destacado


Plugin developer Trebol verde Trebol de oro 1k
Mensajes: 1,037
Registro en: Jan 2014
Reputación: 24
Mensaje: #38
RE: [Modulo] MySQL Threads 1.2
(30/01/2017 12:42 AM)Sugisaki escribió:  en el tema del delay lo tengo arreglado con un bool pero el detalles es que aveces cuando le da el ataque a la base de datos el modulo manda una consulta nula
probe entre el modulo oficial y este y el unico detalle es ese

gracias por sus respuesta

Habrá algún problema de conexión o de codeo del plugin que haga llegar consultas vacías, es demasiado raro. No creo que Destro haya dejado sin querer algún bug de esos. Oh god why

Believe, be yourself and don't hold on to just one dream ❤


30/01/2017 03:35 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
roccoxx Sin conexión
Miembro Destacado


Plugin developer Trebol purpura 1k
Mensajes: 1,154
Registro en: Oct 2013
Reputación: 18
Mensaje: #39
RE: [Modulo] MySQL Threads 1.2
(30/01/2017 12:51 AM)LuKks escribió:  Recomiendo, guardar los datos en el momento en el que cambian. Por ejemplo, guardas los frags y muertes de cada jugador? pues, apenas muera actualizarlo en la base de datos, lo mismo cada vez que mate a alguien para los frags.
Suena "pesado" pero en realidad no es nada. Son 32 jugadores máximo realizando algunas acciones a la vez, es absolutamente nada. Sin miedo!
De esta forma, la tabla está actualizada con los últimos movimientos y no hay necesidad de guardar nada en client_disconnect (mas que su fecha de desconexión quizás).

y si tenes un zp por niveles vas a guardar cada vez que gana un ammopack? Thats what she said

futuro ingeniero agrónomo.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

volví a vender plugins, contactame
30/01/2017 07:52 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
LuKks Sin conexión
Miembro Sr.


Plugin developer
Mensajes: 456
Registro en: Jul 2014
Reputación: 18
Mensaje: #40
RE: [Modulo] MySQL Threads 1.2
(30/01/2017 07:52 AM)roccoxx escribió:  y si tenes un zp por niveles vas a guardar cada vez que gana un ammopack? Thats what she said

Yo guardaría cada vez que finalice el combo, si.

Según los resultados que dejó Destro:
test_mysql: 90 consultas en 0.80 segundos
test_mysql2: 90 consultas en 0.65 segundos

Eso sería en promedio 0.0072 segundos por consulta (ya que utilizaríamos g_connection para no cerrar la conexión por obviedad y hasta creo son asíncronas¿?).

Sé que dejé olvidada el plugin de estadísticas que hice pero ahí es una gran muestra de que no hay problema con MySQL.

30/01/2017 10:52 AM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Allied Modders en español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS