Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Comunicar una accion en una BD a programa Delphi (https://www.clubdelphi.com/foros/showthread.php?t=71772)

phirum1984 09-01-2011 20:38:40

Comunicar una accion en una BD a programa Delphi
 
Hola a todos.

Estoy programando una aplicación de envio de mensajes, la BD está en un servidor de interner MySQL y la aplicación se conecta mediante un ODBC con los datos que le proveo.

Lo que me gustaría es saber la forma de que cuando por ejemplo un usuario tenga un mensaje nuevo la aplicación pueda notificárselo, es decir que cuando se inserte un nuevo registro en la tabla "Mensajes" la BD comunique al programa que ha habido un cambio y asi poder avisar de cualquier manera al usuario, una especie de trigger que se comunique de la BD con mi aplicación, pero con mis conocimientos actuales desconozco una forma de hacerlo excepto usando un Timer que estuviera todo el tiempo comprobando si se han introducido nuevos registros en la tabla de "Mensajes", cosa que me parece poco eficiente y cargante para la aplicación.

Por favor, sugerencias o formas de hacerlo?

De antemano muchas gracias. Saludos.

Caral 10-01-2011 02:06:51

Hola
El timer me parece imperativo ya que de que otra manera se puede verificar si hay alguna modificacion en la tabla.
Yo uso un sistema de mensajes entre usuarios y es la forma en la que lo hago, es muy eficiente y transparente para la bd y el usuario.
Saludos

mamcx 10-01-2011 03:17:39

Y no puedes usar firebird ;)


-------

Prueba con estas ideas:

http://stackoverflow.com/questions/7...nges-mysql-php

Esta suena mas cerca:


http://stackoverflow.com/questions/7...nges-mysql-php

Hacerle poll a un servidor web tiende a ser mala idea si hay muchos usuarios concurrentes. Hay maneras de convertir la situacion en un servicio PUSH. En tal caso, un servicio residente en el servidor web utiliza tecnologia PUSH. El servicio residente hace poll a la DB, pero, no mantiene la conexion de red constante. Es mas eficiente hacerlo dentro del servidor de la DB que estar pidiendo datos desde internet.

Hay varias librerias para hacer un servicio PUSH. Pero todo varia de acuerdo a lo que puedas usar y si tienes o no acceso al servidor.

Pero todo eso es solo si necesitas un servicio muy concurrente.

En ultimas, haz pull ;)

phirum1984 10-01-2011 17:55:46

Gracias por las respuestas.

Unas cuantas cosas:
-Caral, no consumirá mucha memoria o recursos el tener un timer comprobando cada pocos segundos?, es que eso era lo que me paraba de utilizarlos.

-mamcx, sabrías orientarme un poco acerca de como usar lo que me comentas en Delphi?, porque lo desconozco completamente. Habría métodos para poder hacerlo con componentes desde Delphi hacia la BD?.

De nuevo gracias.


La franja horaria es GMT +2. Ahora son las 22:58:59.

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