Mensajes: 1,015
Temas: 42
Registro en: Feb 2016
Reputación:
13
16/07/2016, 11:05 AM
(Última modificación: 16/07/2016, 01:03 PM por Exertency.)
Lo puse asi y no me guarda los datos, intente con INSERT INTO y tambien con UPDATE, ahi te dejo codigo.
(15/07/2016, 07:57 PM)Exertency escribió: Código PHP: //code.. formatex(data2, charsmax(data2), "INSERT INTO table (columna) VALUES ('%d')", Status) mysql_query(g_Connection, "query_handler2", data2)
Mensajes: 252
Temas: 50
Registro en: Mar 2016
Reputación:
2
Destro- Podrias hace un tutorial de como guardar datos.
Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
Destro, se pueden hacer múltiples selecciones en una misma query?
Me refiero a algo como esto (porción de code sacada del zp de Kiske):
Código PHP: "SELECT \ COUNT(id) AS rank \ FROM \ users u \ WHERE \ (u.lvl_total > (SELECT lvl_total FROM users u2 WHERE u2.id = %d) OR (u.lvl_total = (SELECT lvl_total FROM users u2 WHERE u2.id = %d) AND u.id <= %d)) AND u.id <> 1;"
Mensajes: 4,247
Temas: 94
Registro en: Mar 2014
Reputación:
58
(23/12/2014, 01:22 AM)Destro escribió: el modulo no tiene soporte para múltiples consultas en un mismo query
puede que mas adelante le agregue soporte, pero ahora no tengo un internet decente para descargar todo lo que necesito para compilar el modulo.
Cuando crees que podrías agregar eso de las múltiples querys?
Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando. (08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck
Mis aportes
PLUGINSMAPAS
Menú LANG
[SF] Sistema de Frags
Say System (Admin Prefix)
Mensajes: 1,933
Temas: 39
Registro en: Jul 2014
Reputación:
23
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
Mensajes: 1,455
Temas: 36
Registro en: Oct 2013
Reputación:
6
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(failstate, error[], errnum, data[], size, Float:queuetime) { if(debug_mysql) { new quey[512]
mysql_get_query(query, 511);
log_to_file("mysql_debug.log", "consulta: [%s]", query)
}
.......
}
Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
26/01/2017, 01:14 PM
(Última modificación: 26/01/2017, 01:14 PM por Federicomb.)
(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.
Mensajes: 1,933
Temas: 39
Registro en: Jul 2014
Reputación:
23
(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
Mensajes: 2,176
Temas: 99
Registro en: Dec 2013
Reputación:
42
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!
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
(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_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_DATABASE); g_SqlConnect = mysql_connect(g_SqlTuple, iError, sError, charsmax(sError));
if(iError) { log_to_file("sql_error.log", "[MySQL] Error de conexión con %s. [%d]- [%s]", MYSQL_HOST, iError, sError); set_fail_state("[MySQL] Error de conexión con %s. [%d]- [%s]", MYSQL_HOST, iError, sError); return; }
mysql_performance(75, 75, 10);
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_num, error); 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 , capaz a alguien le pueda servir esta información.
Mensajes: 1,933
Temas: 39
Registro en: Jul 2014
Reputación:
23
30/01/2017, 12:42 AM
(Última modificación: 30/01/2017, 12:43 AM por Sugisaki.)
(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
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
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).
Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
(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.
Mensajes: 3,020
Temas: 49
Registro en: Oct 2013
Reputación:
33
(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?
Ingeniero agrónomo y desarrollador de Software.
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"
Merci Alliedmodders pour m'introduire dans la programmation.
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
(30/01/2017, 07:52 AM)roccoxx escribió: y si tenes un zp por niveles vas a guardar cada vez que gana un ammopack?
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.
Mensajes: 642
Temas: 25
Registro en: Feb 2014
Reputación:
17
(26/01/2017, 02:47 PM)Sugisaki escribió: 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 Para mi, seguramente tendras en client_disconnect las cosas asi:
Código PHP: disconntect(id) { g_lvl[id] = g_aps[id] = g_asd..... = 0 }
Lo único que se me ocurre, es que la consulta se mande con esos datos después de pasar por esta función, entonces te queda todo 0. Ahora si se borra es porque estas metiendo mano negra por algún lugar. Esta es mi humilde opinión, quizás sea imposible pero me suena bastante lógica.
Podrías igual mostrar como guardas y cargas todo...
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)
(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
Cuando se llama a mysql_query la consulta se realiza de forma asíncrona (probablemente si porque hay una especie de callback obligatoria)? (esto se podría testear haciendo un print luego del mysql_query y otro print en el callback)
Que sucede si el servidor cambia de mapa y aún hay consultas pendientes?
Si mysql_query es asíncrono y al cambiar el mapa las consultas pendientes se siguen ejecutando normalmente, lo que vendría a estar mal es el código de tu sistema no de Destro o MySQL.
En el caso de que las consultas pendientes se cancelen al cambiar el mapa, entonces debes guardar cada vez que el usuario realice una acción que debas actualizar, sea ganar ammopacks como sumar daño en habilidad, o lo que sea.
Si mysql_query es síncrono lo mismo, el código tuyo estaría mal y no el de Destro/MySQL.
No puedo dar una respuesta precisa porque no se las respuestas de las dos primeras preguntas de este comentario pero aún así deje las respuestas sea el caso que sea para el que si sepa y para los que hagan la prueba de los prints).
Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
Las consultas que quedan pendientes en un cambio, hasta que no termine cada una de las que hay el mapa no cambia. Funciona exactamente igual al módulo original, eso no cambió.
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
Entonces se pueden realizar en client_disconnect sin temor a que algo suceda mal, en fin, publica lo esencial del código para que podamos solucionarlo, en lo posible en una publicación aparte ya que no estamos hablando del módulo realmente.
Mensajes: 2,176
Temas: 99
Registro en: Dec 2013
Reputación:
42
15/02/2017, 03:37 AM
(Última modificación: 15/02/2017, 03:47 AM por CSAxel.)
Haciendo referencia a esto:
https://amxmodx-es.com/Thread-Modulo-MyS...connection
Cual es la referencia entre usar g_Host y g_Connection ?
Es decir, cuando "conviene" usar g_Host al realizar una consulta ( mysql_query) y cuando g_Connection al realizar la misma.
PD: No se si es un problema con el módulo pero al liberar los Handlers ( g_Host y g_Connection) en plugin_end(); me Crashea el servidor.
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
(15/02/2017, 03:37 AM)CSAxel escribió: Haciendo referencia a esto:
https://amxmodx-es.com/Thread-Modulo-MyS...connection
Cual es la referencia entre usar g_Host y g_Connection ?
Es decir, cuando "conviene" usar g_Host al realizar una consulta (mysql_query) y cuando g_Connection al realizar la misma.
PD: No se si es un problema con el módulo pero al liberar los Handlers (g_Host y g_Connection) en plugin_end(); me Crashea el servidor.
Usar g_Host crea una conexión a mysql, realiza la consulta y cierra la conexión.
Usar g_Connection comprueba la conexión y realiza la consulta.
Yo utilizaría g_Connection.
En mi plugin de estadísticas no liberaba los Handlers y funcionaba correctamente, quizás no sea necesario, además, en el ejemplo que deja Destro tampoco utiliza plugin_end ni libera nada.
Mensajes: 229
Temas: 59
Registro en: Jun 2015
Reputación:
0
Es necesario agregar algo al modules.ini para que funcione? en meta list no me aparece el modulo, o hay que borrar el mysql de amxmodx?
Mensajes: 3,077
Temas: 33
Registro en: May 2017
Reputación:
34
(11/01/2018, 02:47 PM)Juan85 escribió: Es necesario agregar algo al modules.ini para que funcione? en meta list no me aparece el modulo, o hay que borrar el mysql de amxmodx?
Agrega esto a tú lista de modulos.
Cita:mysqlt
Creería que con eso se soluciona.
Mensajes: 417
Temas: 53
Registro en: May 2014
(11/01/2018, 02:47 PM)Juan85 escribió: Es necesario agregar algo al modules.ini para que funcione? en meta list no me aparece el modulo, o hay que borrar el mysql de amxmodx?
En modules.ini desactiva el modulo (mysql) si lo tenes activado, y lo mismo con el modulo sqlite (hay gente que no sabe y activa los dos ). Y abajo de esos dos agrega: mysqlt
Ej:
Y acordate siempre de poner el modulo en la carpeta "modules", dependiendo si usas linux o windows
Mensajes: 34
Temas: 6
Registro en: Jan 2018
Reputación:
0
necesito este mudulo <safemenu> alguien me lo puede pasar?
|