FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour tdolphin y ping...
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
tdolphin y ping...
Posted: Tue Sep 27, 2016 10:51 AM
Hola.
He visto en el manual del mysql y php que haciendo
$oCnx->ping()

se puede verificar si la conexion esta activa/funciona.

Con tdolphin como lo hago?

gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: tdolphin y ping...
Posted: Tue Sep 27, 2016 04:40 PM
goosfancito

Contrario a lo recomendado, pero por comodidad a los desarrolladores, ya tdolphin hace el llamado a ping, con cada llamada a ejecucion de una consulta. (ex: oServer:Query( "SELECT * FROM MYTABLE" ) )
ya en el codigo c de la funcion que hace la consulta, se hace una llamada antes a la funcion ping, por lo que en teoria no es necesario que lo hagas.
Code (fw): Select all Collapse
HB_FUNC( MYSQLPING ) //Zero if the connection to the server is alive. Nonzero if an error occurred
{
   int iPing = 1;
   MYSQL * hMySQL = (MYSQL *) hb_MYSQL_par( 1 );
   
   if( hMySQL )
   {
      iPing = mysql_ping( hMySQL );
   }
   else
   {
      hb_errRT_BASE( EG_ARG, 2020, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );      
   }
   
   hb_retni( iPing );
}

HB_FUNC( MYSQLQUERY )
{
   MYSQL * hMySQL = (MYSQL *) hb_MYSQL_par( 1 );
   
   if( hMySQL )
   {
      if( mysql_ping( hMySQL ) == 0 )
      {
         hb_retnl( ( long ) mysql_real_query( hMySQL,
                   ( const char *  ) hb_parc( 2 ),
                   ( unsigned long ) hb_parnl( 3 ) ) ) ;
      }
      else
      {
         hb_errRT_BASE( EG_ARG, 2020, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); 
      }
   }
   else
   {
      hb_errRT_BASE( EG_ARG, 2020, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS );
   }     
}

ahora si tu lo desea hacer, pues con hacer oServer:Ping(), listo.
Code (fw): Select all Collapse
   METHOD Ping()                  INLINE IIf( MySqlPing( ::hMySQL ) > 0, ( ::CheckError(), FALSE ), TRUE )

debes tomar en cuenta que si la conexion no esta ok, el tiempo de espera de la llamada a ping esta basado en el timeout configurado, que para el caso de algunos hosting es unos 20 segundo.
lo cual es desesperante. :-/
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: tdolphin y ping...
Posted: Wed Sep 28, 2016 01:10 AM
habia visto eso del oserver:ping y lo prove, pero en mi caso esa llamada hace que la aplicacion se quiebre, he leido en el foro que varios comentaron lo mismo,
o sea que el ping no seria lo que yo estoy neecsitando.
paso a comentar que me sucede,

En el trabajo la conexion al mysql es pr medio de red interna,
la aplicacion hace INSERT y UPDATE en una DB, pero
hay veces que se corta la conexion y al momento de hacer la
operacion de INSERT o UPDATE se produce un error del programa,

mi idea era antes de hacer el INSERT o UPDATE chequear que la conexion
este OK. de no estarlo no haria la operacion.

pues puse
Code (fw): Select all Collapse
if ::oCnx:ping()
,,,,,


y ahi queda un buen rato y en menos de 10 segundos el windows dice APLICACION INESTABLE y
la corta. o sea, que jamas vuelve del ping.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: tdolphin y ping...
Posted: Wed Sep 28, 2016 10:52 AM
ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: tdolphin y ping...
Posted: Wed Sep 28, 2016 10:14 PM
haber, goosfancito, reemplaza esta funcion en function.c en tdolphin, y recompila la libreria.
otro asunto, yo para que me funcionara el cambio en el tiemout en caso de perdida de conexion he tenido que usar otra libmysql.dll (la he sacado de mariadb), ya que la original nunca me reconocio el cambio a 10 segundo, pero ya con la dll de mariadb me ha funcionadp bien, por favor nos comentas como te fue para que asi sepamos si te funciono o no.

a mi ya me realiza la reconexion, luego de perdidas de conexion.
salu2
carlos vargas

Code (fw): Select all Collapse
HB_FUNC( MYSQLCONNECT ) // -> MYSQL*
{
   MYSQL * mysql;
   unsigned int port  = ISNUM( 4 ) ? ( unsigned int ) hb_parni( 4 ) :  MYSQL_PORT;
   unsigned int flags = ISNUM( 5 ) ? ( unsigned int ) hb_parni( 5 ) :  0;
   PHB_ITEM pcbDecrypt = hb_param( 7, HB_IT_BLOCK );  
   unsigned int * iTimeOut= 10;
   BOOL bReconnect = TRUE;
    
   mysql = mysql_init( NULL );
   
   if ( ( mysql != NULL ) )
   {
      mysql_options( mysql, MYSQL_OPT_RECONNECT      , &bReconnect );
      mysql_options( mysql, MYSQL_OPT_CONNECT_TIMEOUT, &iTimeOut   );
      
      mysql_real_connect( mysql, 
                          hb_itemGetC( hb_vmEvalBlockV( pcbDecrypt, 1, hb_param( 1, HB_IT_ANY ) ) ), 
                          hb_itemGetC( hb_vmEvalBlockV( pcbDecrypt, 1, hb_param( 2, HB_IT_ANY ) ) ), 
                          hb_itemGetC( hb_vmEvalBlockV( pcbDecrypt, 1, hb_param( 3, HB_IT_ANY ) ) ), 
                          hb_itemGetC( hb_vmEvalBlockV( pcbDecrypt, 1, hb_param( 6, HB_IT_ANY ) ) ),
                          port, NULL, flags );
      hb_MYSQL_ret( mysql );
   }
   else
   {
     hb_retptr( NULL );
   }
}
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: tdolphin y ping...
Posted: Wed Sep 28, 2016 11:15 PM

el problema qe tengo con la ultima version de la tdolphin es que cuando se conecta
muestra la ip a donde se conecta, ya busque en los fuentes y la verdad que me perdi,
no se donde ponen ni un ? ni un msginfo pero aparece en la pantalla el IP,
por eso deje de usar los fuentes y volvi a una version vieja, que en esa version tengo
problemas cuando paso un campo (por ejemplo) string y el campo destino es un INT,
no hace la conversion. pero bueno. sos "parches" en mi misma app.

gracias.

FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: tdolphin y ping...
Posted: Fri Sep 30, 2016 10:48 AM

Carlos,

Referente:
libmysql.dll (la he sacado de mariadb)

pode me enviar uma cópia da LIBMYSQL.DLL(mariadb)?

obrigado

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: tdolphin y ping...
Posted: Fri Sep 30, 2016 04:27 PM
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: tdolphin y ping...
Posted: Fri Sep 30, 2016 09:11 PM

Carlos,

como lo hace en PRG para probar la conexión a perder y realizar la reconexión?

Gracias

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: tdolphin y ping...
Posted: Fri Sep 30, 2016 10:03 PM

eso lo hace solo, cuando tdolphin intenta ejecutar un query, y si la conexion esta caida, esta intenta reconectarse.
ahi nosotros no hacemos nada.
eso siempre y cuando reempalzemos la funcion c que expuse anteriormente en los funetes de tdolphin y recompilemos la libreria.

salu2
carlos vargas

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: tdolphin y ping...
Posted: Fri Oct 14, 2016 08:24 PM

Carlos, gracias!

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: tdolphin y ping...
Posted: Sat Oct 15, 2016 03:48 PM

Estimados, solo preguntarles si implementaron el cambio, y si es asi, como les fue.
vamos, un poco de feedback.

salu2
carlos vargas

:-)

Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)
Posts: 1286
Joined: Mon Feb 25, 2008 02:54 PM
Re: tdolphin y ping...
Posted: Sun Oct 16, 2016 08:19 PM

Carlos,

com a versão nova da TDOLPHIN, estou enfrentando problemas com CAMPOS NULL.

Como você conseguiu resolver?

gracias,

ubiratanmga@gmail.com

FWH24.04
BCC7.3
HARBOUR3.2
xMate
Pelles´C
TDolphin

Continue the discussion