Page 1 of 1

tdolphin y ping...

PostPosted: Tue Sep 27, 2016 10:51 am
by goosfancito
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.

Re: tdolphin y ping...

PostPosted: Tue Sep 27, 2016 4:40 pm
by carlos vargas
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: Select all  Expand view

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: Select all  Expand view

   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. :-/

Re: tdolphin y ping...

PostPosted: Wed Sep 28, 2016 1:10 am
by goosfancito
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: Select all  Expand view
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.

Re: tdolphin y ping...

PostPosted: Wed Sep 28, 2016 10:52 am
by MGA

Re: tdolphin y ping...

PostPosted: Wed Sep 28, 2016 10:14 pm
by carlos vargas
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: Select all  Expand view

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 );
   }
}  
 

Re: tdolphin y ping...

PostPosted: Wed Sep 28, 2016 11:15 pm
by goosfancito
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.

Re: tdolphin y ping...

PostPosted: Fri Sep 30, 2016 10:48 am
by MGA
Carlos,

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

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

obrigado

Re: tdolphin y ping...

PostPosted: Fri Sep 30, 2016 4:27 pm
by carlos vargas

Re: tdolphin y ping...

PostPosted: Fri Sep 30, 2016 9:11 pm
by MGA
Carlos,

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

Gracias

Re: tdolphin y ping...

PostPosted: Fri Sep 30, 2016 10:03 pm
by carlos vargas
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

Re: tdolphin y ping...

PostPosted: Fri Oct 14, 2016 8:24 pm
by MGA
Carlos, gracias!

Re: tdolphin y ping...

PostPosted: Sat Oct 15, 2016 3:48 pm
by carlos vargas
Estimados, solo preguntarles si implementaron el cambio, y si es asi, como les fue.
vamos, un poco de feedback.
:-)
salu2
carlos vargas

Re: tdolphin y ping...

PostPosted: Sun Oct 16, 2016 8:19 pm
by MGA
Carlos,

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

Como você conseguiu resolver?

gracias,