2009-04-13 23 views

Respuesta

4

MySQL ahora tiene activadores y procedimientos almacenados, pero no creo que tengan forma alguna de notificar un proceso externo, por lo que yo sé que no es posible. Tendría que sondear la base de datos cada segundo para buscar nuevos registros.

Incluso si fuera así, esto supone que su proceso de PHP es de larga duración, de modo que puede darse el lujo de esperar a que aparezca un registro. Dado que la mayoría de PHP se usa para sitios web donde se ejecuta el código y luego sale lo más rápido posible, no está claro si eso es compatible con lo que tienes.

+0

Aparentemente es posible, pero con algún tipo de complemento: http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html#qandaitem-22-5-1-10 –

5

Lo más simple es probablemente sondear el DB cada pocos segundos y ver si se han insertado nuevos registros. Debido al almacenamiento en caché de consultas en la base de datos, esto no debería afectar sustancialmente el rendimiento de la base de datos.

2

Si todos los cambios en su base de datos son hechos por PHP, crearía una función de contenedor para mysql_query y si el tipo de consulta fuese INSERT, REPLACE, UPDATE o DELETE llamaría a una función para enviar el correo electrónico respectivo.

EDIT: se olvidó de mencionar pero también se podría hacer algo como lo siguiente:

if (mysql_affected_rows($this->connection) > 0) 
{ 
    // mail(...) 
} 
-1

esto se puede hacer con relativa facilidad usando los procedimientos almacenados y disparadores. He creado una pantalla 'Live View' que tiene una pantalla de desplazamiento que se actualiza con nuevos eventos de mi tabla de eventos. Puede ser un poco complicado, pero una vez que se ejecuta es rápido.

2

Puede crear un desencadenante que se ejecute cuando ocurre una actualización. Es posible ejecutar/notificar un proceso externo usando una UDF (función definida por el usuario). No hay ningún método incorporado para hacerlo, por lo que es un caso de carga de un plugin UDF que lo hará por usted.

Google para 'mysql udf sys_exec' o 'mysql udf ipc'.

Cuestiones relacionadas