Page 1 of 1

sesion tdolphin

PostPosted: Mon Oct 16, 2017 8:03 pm
by kpidata
Estimados tengo una aplicación que se conecta con mysql, con una base remota en un hosting, y la típica situación, el usuario abre una ventana, lo llaman o lo que sea y pasa un rato y se cae el sistema... que se perdió la conexion con el host... como puedo resolver esto... yo vi esto.

oServer:Execute("SET SESSION wait_timeout = 186400")

donde debo ubicarlo... ???

Re: sesion tdolphin

PostPosted: Mon Oct 16, 2017 8:38 pm
by kpidata
sorry, ya lo vi... vere si funciona...

Re: sesion tdolphin

PostPosted: Tue Oct 17, 2017 2:57 am
by Busmatic_wpb
Mira amigo lo mas simple es mandar un ping a server cada cierto tiempo. Yo utilizo la version Mysql de Sr. William y en ella viene un llamado a un ping al server
ASi dejo el programa conectado a server remoto y no tengo problemas con el time out.

.... llamado del diaglo o Window


Function PInGtimer()
DEFINE TIMER oTimer3 of oWnd INTERVAL 5000 ACTION EsTadoServer()
Activate timer oTimer3
return

Function EsTadoServer()

IF !oCon:oKon:ping()
MsgStop( "Se ha dectectado que el server no resnponde ","Aviso importante, revise estado del Servidor")
oTimer3:desativate()
oTimer3:end()
oCon:end()
QUIt

endif

oP:Pingserver:= oCon:oKon:ping()
return

Oscar Chacon.

Re: sesion tdolphin

PostPosted: Tue Oct 17, 2017 12:31 pm
by kpidata
Estimados, coloque esta opción, y no me corre, se me cae la conexion a los 3 minutos de activar la señal.

Re: sesion tdolphin

PostPosted: Tue Oct 17, 2017 4:59 pm
by TecniSoftware
Donde la colocaste?

Yo la ubique despues de hacer la conexion:

oServer := TDolphinSrv():New( ....

oServer:Execute( "SET SESSION wait_timeout = 86400;" )

He tenido el sistema abierto por horas y no se me ha desconectado nunca.

Saludos!

Re: sesion tdolphin

PostPosted: Sun Oct 22, 2017 10:21 pm
by albeiroval
kpidata,

Estimados tengo una aplicación que se conecta con mysql, con una base remota en un hosting


Debes tener en cuenta que el tiempo de la sesion de conexion en los HOSTING son autonomas y no duran mas de 30 segundos,
por lo tanto la instruccion SET SESSION wait_timeout = 86400; no aplica en este caso.

Yo tengo una aplicacion cuya base de datos trabaja en un hosting, y la verdad que 30 segundos ha sido mas que suficiente para
hacer un INSERT, UPDATE, DELETE o un SELECT simple o complejo, incluyendo consultas que usan INNER JOIN / LEFT JOIN, con inclusion de mas de una tabla y con muchos registros.

Ahora si la database reside en un servidor que no es un hosting y el acceso es remoto, para ese caso si funciona esa instruccion,
sin embargo si y solo si para este caso no es recomendable dejar abierta la conexion tanto tiempo.

Re: sesion tdolphin

PostPosted: Tue Oct 24, 2017 11:44 am
by jbrita
Amigo Albeiro. entonces dices que cada vez que grabas algo en una TABLA abres la BASE DE DATOS,

saludos

Re: sesion tdolphin

PostPosted: Wed Oct 25, 2017 3:05 am
by cmsoft
Lo que comenta albeiro es cierto, pero si estas en una pantalla con un xbrowse abierto con una query, si la coexion se cae, el programa se caera al querer hacer algun proceso sobre el.
Lo que yo instrumente que me funciona bien tanto en bases de datos almacenadas en hosting como en local, es hacer una simple query para que la conexion no se caiga, cada x tiempo (con un timer).
Si te sirve, la coloco aqui

En la ventana principal de tu aplicacion pones:
Code: Select all  Expand view

DEFINE TIMER oApp:oTimer INTERVAL 10000 ACTION Pinguear() OF oApp:oWnd  
ACTIVATE WINDOW oApp:oWnd MAXIMIZED ON INIT oApp:oTimer:Activate()


Y la funcion pinguear seria:
Code: Select all  Expand view

*********************************************
** Pinguar
FUNCTION Pinguear()
LOCAL oQry, lRta
IF oApp:oServer <> nil
   oQry := oApp:oServer:Query("SELECT 1")
   IF oQry:RecCount() = 0
      oApp:oTimer:Deactivate()
      oApp:oWnd:SetMsg("Reconectando con el servidor......")
      lRta := oApp:oServer:Ping()
      IF !lRta
         MsgStop("Se desconecto el servidor!","Error")
         QUIT
      ENDIF
      oApp:oTimer:Activate()  
      ELSE
      oApp:oWnd:SetMsg("Pingueando...")      
   ENDIF
ENDIF
RETURN nil

Espero te sirva