Живое обновление уведомлений об изменениях базы данных MYSQL PHP - PullRequest
10 голосов
/ 13 апреля 2009

Мне было интересно, как вызвать уведомление, если новая запись вставлена ​​в базу данных, используя PHP и MySQL.

Ответы [ 6 ]

5 голосов
/ 13 апреля 2009

Самое простое, вероятно, это опросить БД каждые несколько секунд и посмотреть, были ли добавлены новые записи. Из-за кэширования запросов в БД это не должно существенно влиять на производительность БД.

4 голосов
/ 13 апреля 2009

MySQL теперь имеет триггеры и хранимые процедуры, но я не верю, что у них есть какой-либо способ уведомления о внешнем процессе, насколько я знаю, это невозможно. Вам придется опрашивать базу данных каждую секунду или около того, чтобы искать новые записи.

Даже если бы это было так, это предполагает, что ваш PHP-процесс является долгоживущим, так что он может позволить себе зависать для появления записи. Учитывая, что большая часть PHP используется для веб-сайтов, где код выполняется, а затем завершается как можно быстрее, неясно, совместимо ли это с тем, что у вас есть.

3 голосов
/ 18 ноября 2011

Вы можете создать триггер, который запускается при обновлении. Можно запустить / уведомить внешний процесс, используя UDF (пользовательская функция). Для этого нет встроенных методов, так что это случай загрузки плагина UDF, который сделает это за вас.

Google для «mysql udf sys_exec» или «mysql udf ipc».

2 голосов
/ 13 апреля 2009

Если бы все изменения вашей базы данных были сделаны PHP, я бы создал функцию-обертку для mysql_query, и если бы тип запроса был INSERT, REPLACE, UPDATE или DELETE, я бы вызвал функцию для отправки соответствующего электронного письма.

РЕДАКТИРОВАТЬ: я забыл упомянуть, но вы также можете сделать что-то вроде следующего:

if (mysql_affected_rows($this->connection) > 0)
{
    // mail(...)
}
0 голосов
/ 22 мая 2009

Это можно сделать относительно легко, используя хранимые процедуры и триггеры. Я создал экран «Просмотр в реальном времени» с прокруткой, которая обновляется новыми событиями из моей таблицы событий. Это может быть немного неудобно, но как только он работает быстро.

0 голосов
/ 15 апреля 2009

Однажды я спрашиваю на форуме MySQL, существует ли в MySQL событие, подобное Firebird или Interbase, и вижу, что кто-то отвечает Да (я действительно не уверен)

проверьте это: http://forums.mysql.com/read.php?84,3629,175177#msg-175177

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...