Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2024
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
mantener la conexion abierta MyDAC, Delphi 7

Hola a todos;

he estado buscando diferentes formas de solucionar el problema de que mi aplicación en Delphi 7 pierda la conexión con el servidor MySQL en internet. Ninguna ha funcionado totalmente.

Se me ocurrió que pudiera mantener un "hilo" ejecutando cada cierto tiempo el método PING de Tmyconnection (que según lo que he leído, es lo que recomiendan los de DEVART). Pero no tengo ni idea de como hacerlo.

Como abro un "hilo" de ejecución alterno?; donde lo abro, en el menú principal? o en el Data Module?; una vez abierto que problemas puede tener para el resto de los procesos normales del sistema?

Cualquier ayuda para implementar esto es muy muy apreciada.

Saludos
Responder Con Cita
  #2  
Antiguo 05-03-2024
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, yo más que un hilo nuevo te hubiera propuesto que pusieras un Timer que cada minuto (por ejemplo) ejecute una consulta simple sobre la Base de Datos para mantener la conexión activa.
Una consulta sencilla tipo:

Código SQL [-]
SELECT TOP 1 FROM Tabla

(escogiendo una tabla pequeña con pocos registros para minimizar la carga).

¿Porqué te sugería un un Timer y no un hilo nuevo? Porque la mayoría de componentes de conexión a Base de Datos no son Thread-safe (desconozco si lo son los de MyDAC); eso significa que para usarlos en un hilo nuevo, debes usar una nueva conexión. Al usar una nueva conexión, ya no estás usando la conexión principal y por lo tanto el objetivo de mantenerla abierta ya no se si se cumple.

De todas formas si la gente de MyDAC lo recomiendan, pues adelante.

Cita:
Empezado por ArtPortEsp Ver Mensaje
Se me ocurrió que pudiera mantener un "hilo" ejecutando cada cierto tiempo el método PING de Tmyconnection (que según lo que he leído, es lo que recomiendan los de DEVART). Pero no tengo ni idea de como hacerlo.
Creo un TThread y programa dentro lo que necesites (PING). Luego asegúrate desde el programa (por ejemplo cada minuto -con un Timer-) de ir ejecutando ese thread de forma continua.

Aquí tienes una entrada en mi blog -ya antigua- justo sobre cómo lanzar consultas utilizando TThreads. Justo lo que necesitas. Lo único que aquí se hace con ADO, pero es trivial cambiar el componente de conexion (TADOConnection) y el de query (TADOQuery) por los equivalentes en MyDAC para que funcione sin problemas.

https://neftali.clubdelphi.com/utili...o-con-threads/
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 23-03-2024
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Antes que nada, gracias por el tiempo para tu respuesta German;

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Bueno, yo más que un hilo nuevo te hubiera propuesto que pusieras un Timer que cada minuto (por ejemplo) ejecute una consulta simple sobre la Base de Datos para mantener la conexión activa.
Una consulta sencilla tipo:

Código SQL [-]
SELECT TOP 1 FROM Tabla

(escogiendo una tabla pequeña con pocos registros para minimizar la carga).
Me siento más cómodo con esta opción, en una aplicación con menú principal que llama a varias ventanas diferentes, en donde pondrías el Timer?; en el menu?, en el Datamodule?

Me inclino a ponerlo en el Menu, ya que es la forma que siempre está abierta. Supongo que una vez activado el Timer, ese se mantiene activo aunque el menú no sea la forma activa en ese momento, verdad?
Responder Con Cita
  #4  
Antiguo Hace 4 Semanas
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ArtPortEsp Ver Mensaje
...en una aplicación con menú principal que llama a varias ventanas diferentes, en donde pondrías el Timer?; en el menu?, en el Datamodule?

Necesitas ponerlo en algún elemento que siempre esté activo.

Si el Datamodule está "vivo" siempre, a efectos prácticos es lo mismo. Si no está siempre creado deberás ponerlo en el menú.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
mantener sesion abierta LACV FireMonkey 8 25-04-2022 13:14:48
Conexión MYDAC, ANDROID y WAMPSERVER Jose Roman Conexión con bases de datos 1 28-06-2021 04:17:41
Verificar Parametro de conexion en mydac webmasterplc OOP 3 01-08-2012 17:11:53
Problemas conexion MyDAC karlaoax Conexión con bases de datos 16 16-08-2007 21:27:41
componentes MyDAC de conexion docarrillo Conexión con bases de datos 3 07-07-2003 12:41:59


La franja horaria es GMT +2. Ahora son las 14:30:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi