Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Perdida de Conexion (https://www.clubdelphi.com/foros/showthread.php?t=54606)

Libarra 25-03-2008 07:05:36

Perdida de Conexion
 
Que al compañeros.. expongo lo siguiente realice una aplicacion con DElphi 7 donde se conecta por el puerto serial a un PBX y obtiene el detallado de las llamdas.. una vez que lo obtiene le doy formato y lo distribuyo en campos de una BD en Mysql usando los Zeos components para hacer la conexion Delphi-Mysql todo marcha.. bien.. mientras haya actividad.. pero llega un momento en que el PBX ya no recibe llamadas sobre todo en fines de semana y la conexion se pierde..

implemente.. un timer. que me este checando la conexion asi el server.. y si hay perdida.. que la levante de nuevo.. este es el codigo que uso

procedure TfrmPrincipal.Timer1Timer(Sender: TObject);
begin
if not cn.Connected then
cn.Connected:=true;
end;

Pero creo que no me ha funcionado puesto que la conexion despues de varias hras se pierde..

Mi pregunta.. es ¿Existe alguna otra manera de checar si sta conectado usando zeos.. ??

Gracias!

ContraVeneno 25-03-2008 16:35:38

Puedes verificar en los eventos "BeforeDisconnect" o "AfterDisconnect", lo mismo para "BeforeConnect", "AfterConnect" de tu componente "CN"

duilioisola 25-03-2008 16:35:51

Para chequear que estás conectado, quizás deberías hacer algo en la base de datos, dentro de un try ... except.

Por ejemplo

QueryDummy es un query que hace algo simple
Código SQL [-]
select count(*) from tabla
Código Delphi [-]
procedure TfrmPrincipal.Timer1Timer(Sender: TObject);
begin
   try
      with QueryDummy do
      begin
         if no Transaction.InTransaction do Transaction.StartTransaction;
         ExecQuery;
         Transaction.Commit;
      end;
   except
      {si hubo error, desconecto y conecto nuevamente}
      if cn.Connected then
         cn.Connected := False;
      if not cn.Connected then
         cn.Connected := True;
   end;
end;

Libarra 25-03-2008 17:40:31

Cita:

Empezado por duilioisola (Mensaje 275116)
Para chequear que estás conectado, quizás deberías hacer algo en la base de datos, dentro de un try ... except.

Por ejemplo

QueryDummy es un query que hace algo simple
Código SQL [-]select count(*) from tabla

Código Delphi [-]procedure TfrmPrincipal.Timer1Timer(Sender: TObject);
begin try with QueryDummy do begin if no Transaction.InTransaction do Transaction.StartTransaction;
ExecQuery;
Transaction.Commit;
end;
except {si hubo error, desconecto y conecto nuevamente} if cn.Connected then cn.Connected := False; if not cn.Connected then cn.Connected := True; end;
end;


Gracias compañeros...por su pronta respuesta lo que he notado es que despues de 8hrs sin actividad se pierde la conexion pero no me manda ningun error.. de hecho lei en la documentacion del MySQL que esos solia pasar en windows se perdia la conexion pero el SO no mandaba ningun msg de error

Optare por la soluicion que me da duilioisola le estare mandando cada cierto tiempo no se tal vez cada hra.. una consulta pa mantener al servidor siempre funcionando..

Muchas gracias.. despues posteo resultados!


La franja horaria es GMT +2. Ahora son las 21:29:19.

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