Мне было интересно, как вызвать уведомление, если новая запись будет вставлена в базу данных с использованием PHP и MySQL.
Самое простое – опросить БД каждые несколько секунд и посмотреть, были ли вставлены новые записи. Из-за кэширования запросов в БД это не должно существенно влиять на производительность БД.
У MySQL теперь есть триггеры и хранимые процедуры, но я не думаю, что они могут каким-либо образом уведомлять внешний процесс, насколько я знаю, это невозможно. Вам нужно будет опробовать базу данных каждую секунду или около того, чтобы искать новые записи.
Даже если это так, это предполагает, что ваш PHP-процесс является долговечным, так что он может позволить себе зависнуть для записи записи. Учитывая, что большинство PHP используется для веб-сайтов, где код работает, а затем выходит как можно быстрее, неясно, совместимо ли оно с тем, что у вас есть.
Если все изменения в базе данных сделаны PHP, я бы создал функцию-оболочку для mysql_query, и если тип запроса был INSERT, REPLACE, UPDATE или DELETE, я бы вызвал функцию для отправки соответствующего сообщения.
EDIT: Я забыл упомянуть, но вы также можете сделать что-то вроде следующего:
if (mysql_affected_rows($this->connection) > 0) { // mail(...) }
Вы можете создать триггер, чем запускаться при обновлении. Можно запустить / уведомить внешний процесс, используя UDF (пользовательская функция). Нет никаких встроенных методов для этого, так что это пример загрузки плагина UDF, который сделает это за вас.
Google для «mysql udf sys_exec» или «mysql udf ipc».
Однажды я спрашиваю в форуме MySQL, если в MySQL существует событие вроде Firebird или Interbase, и я вижу, что кто-то отвечает Да (я действительно не уверен)
проверьте это: http://forums.mysql.com/read.php?84,3629,175177#msg-175177
Это можно сделать относительно легко, используя хранимые процедуры и триггеры. Я создал экран «Live View», на котором есть прокручиваемый экран, который обновляется новыми событиями из моей таблицы событий. Это может быть немного неудобно, но как только он бежит быстро.