Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > Мониторинг изменений в базе


Автор: DiFor 11.5.2011, 07:42
Есть несколько сервисов. Один из них 1С сервер, второй веб-ориентированный сервис. 1С сервер делает выгрузку части данных в постгрес. На веб стороне необходимо добится некой реализации реал-тайма и после внесения изменений в базу извне как то добавление записей, удалений, изменений нужно делать различные телодвижения. Веб система построена на пхп. В идеале необходимо после внесений каких-либо изменений "дергать" скрипт и вообще в идеале с каким-то параметрами как например имя таблицы и тому подобное. Подскажите пожалуйста, есть ли какое-нибудь решение сего?

Автор: LSD 11.5.2011, 10:49
Цитата(DiFor @  11.5.2011,  08:42 Найти цитируемый пост)
Подскажите пожалуйста, есть ли какое-нибудь решение сего? 

http://www.postgresql.org/docs/8.1/static/triggers.html

Автор: DiFor 11.5.2011, 11:10
Тригеры это понятно, а вот увеют ли тригеры дергать пхп скрипт находящийся на сервере?

Автор: LSD 11.5.2011, 11:47
Цитата(DiFor @  11.5.2011,  12:10 Найти цитируемый пост)
Тригеры это понятно, а вот увеют ли тригеры дергать пхп скрипт находящийся на сервере?

При большом желании, наверно и это можно, но зачем? Почему логику реализованную в PHP нельзя перенести в PL/pgSQL?

Автор: DiFor 11.5.2011, 12:06
Потому что необходимо добиться реал тайма который завязан на COMET. После добавления новых элементов, они должны появится на странице. вот почему

Автор: LSD 11.5.2011, 12:24
И как вызов PHP скрипта поможет обновить данные в браузере пользователя?

Автор: DiFor 11.5.2011, 14:38
Посмотрите пожалуйста что такое COMET. Вопрос не о браузере, а о реализации контроля изменений в базе

Автор: LSD 11.5.2011, 15:54
Реализовать можно кучей разных способов:
- можно завести в базе табличку, в которую писать: имя таблицы, ид записи которая изменилась, а на стороне сервера постоянно сканировать эту таблицу
- можно из тригера послать POST/GET с необходимыми параметрами
- можно вызвать внешнюю программу, которая каким-то образом сделает нужную работу

Автор: DiFor 12.5.2011, 08:14
оу, вот это уже лучше. а можно попросить пример реализации второго и третьего случая

Автор: LSD 12.5.2011, 09:55
Ставишь http://pgfoundry.org/projects/pljava/ или даже https://public.commandprompt.com/projects/plphp/ и пишешь нужный код. Только учти, что тебе нужен untrusted режим.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)