Det bästa sättet att uppnå detta är att använda en trigger och en cron. Skapa en "aviseringskö"-tabell och fyll den med en utlösare när en rad infogas i den önskade tabellen.
t.ex.
CREATE TABLE `notification_queue` (
`notification_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sent` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`notification_id`)
);
Definiera sedan en enkel trigger:
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 ;
Från den punkten är allt du behöver göra att köra en crontab på servern (säg varje minut) som väljer från notification
tabell där sent = 0
, skicka meddelandet och ställ in sent = 1
Så vitt jag vet är det det bästa sättet att få ut den informationen ur databasen utan att läsa lagerloggarna.
Om du behöver ett exempel på skriptet som ska köras med 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