La mejor manera de lograr esto sería usando un disparador y un cron. Cree una tabla de 'cola de notificación' y complétela con un disparador cuando se inserte una fila en la tabla deseada.
ej.
CREATE TABLE `notification_queue` (
`notification_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sent` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`notification_id`)
);
Luego defina un disparador simple:
DELIMITER $$
CREATE TRIGGER t_notification_insert
AFTER INSERT ON [table_being_inserted]
FOR EACH ROW
BEGIN
INSERT INTO `notification_queue` (`sent`) VALUES (0);
END$$
DELIMITER ;
A partir de ese momento, todo lo que necesita hacer es ejecutar un crontab en el servidor (digamos cada minuto) que selecciona de la notification
tabla donde sent = 0
, envíe la notificación y configure sent = 1
Hasta donde yo sé, esa es la mejor manera de obtener esa información de la base de datos sin leer los registros del contenedor.
Si necesita un ejemplo del script para ejecutar con cron:
#!/bin/bash
DB_USER=''
DB_PASS=''
DB_NAME=''
ID=`mysql -u$DB_USER -p$DB_PASS $DB_NAME -Bse "SELECT notification_id FROM notification_queue WHERE sent=0 LIMIT 1;"`
if [[ ! -z $ID ]]
then
# SEND MAIL HERE
RESULT=`mysql -u$DB_USER -p$DB_PASS $DB_NAME -Bse "UPDATE notification_queue SET sent=1 WHERE notification_id = $ID;"`
echo "Sent"
fi