LINUX.ORG.RU

mysql + триггер + скрипт


0

0

Привет всем!!!
Можно ли в MySQL сделать триггер, который бы при инсерте определенной строки запускал внешний скрипт? Хочу логи в базу писать и в случае "фигни" в логах отправлять уведомление на мыло, джабер и т.д.

Фильтруй фигню перед записью в базу

sdio ★★★★★
()
Ответ на: комментарий от gods-little-toy

> Фильтруй фигню перед записью в базу

да я как бы и затеять все это хочу что бы уже из базы выгребать

ну короче решением есть только чеканье по крону скриптом новой "фигни" в отдельной таблице. костылики... :)

joinordie
() автор топика
Ответ на: комментарий от gods-little-toy

>из коей отдельным клиентским скриптом выгребать

а он будет проверять каждую секунду? а если хочется асинхронности?

dimon555 ★★★★★
()
Ответ на: комментарий от joinordie

>ну короче решением есть только чеканье по крону скриптом новой "фигни" в отдельной таблице. костылики... :)

да их всего два или spin
или какое-то прерывание или оно же вызов, но для этого должна быть поддержка

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

>из коей отдельным клиентским скриптом выгребать

> а он будет проверять каждую секунду?

да.

> а если хочется асинхронности?

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

или тебе наоборот синхронность нужна?

gods-little-toy ★★★
()
Ответ на: комментарий от gods-little-toy

чекать каждую секунду как то криво. триггер для того и хочу повесить, что бы только в момент "фигни" в логах отправлять мессагу. ну а так как получается, что нет такой фичи то все равно приходиться чекать каждую секунду/минуту. или я что то пропустил?

joinordie
() автор топика
Ответ на: комментарий от joinordie

> чекать каждую секунду как то криво. триггер для того и хочу повесить, что бы только в момент "фигни" в логах отправлять мессагу. ну а так как получается, что нет такой фичи то все равно приходиться чекать каждую секунду/минуту. или я что то пропустил?

Все правильно. Текущее решение - только периодический опрос. Если это тебя совсем не устраивает, еще можно:

1. Напиcать (на C++) свою UDF-функцию и включить ее в сервер. Потом в триггере вызывать что-то вроде

. SET dummy= my_udf_func(update_operation_parameters);

дальше оно вызовет твой C++ код, где уже можно делать что хошь

2. Если ты уже на версии 5.1 и включил row-based replication - можно попробовать прицепиццо как replication slave, далее ловить и парсить replication event'ы, увидев event на интересующей таблице - совершать соответсвтующие действия. у меня только есть подозрения что нормального API для разбора replication event'ов [еще] не существует.

gods-little-toy ★★★
()

Прочитал сначала "mysql + триппер", испугался.

mannaz
()
Ответ на: комментарий от gods-little-toy

понял. всем спасибо. будем кодить на плюсах...

joinordie
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.