Sign in Join
Wiki copytemporary

TFBEventMonitor/ru

English · Русский

TFBEventMonitor из модуля FBEventMonitor используется для мониторинга именованных событий, отправленных с сервера базы данных Firebird. События обычно генерируются триггерами при определенных операциях с базой данных.

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

Пример

Обновление memo получаемыми событиями. Мониторинг событий с E1 по E7.

pascal
procedure TForm1.StartMonitor;
begin
  EventsM:=TFBEventMonitor.create(Self);
  EventsM.Connection:=IBConnection1;
  EventsM.Events.CommaText:='"E1",E2,E3,E4,"E5","E6","E7"'; //кавычки игнорируются
  EventsM.OnEventAlert:=OnFBEvent;
  EventsM.RegisterEvents;   // активирует IBConnection1, если он до сих пор не подсоединен к БД
end;

procedure TForm1.StopMonitor;
begin
  EventsM.UnRegisterEvents;  
  EventsM.Free;
end;

procedure TForm1.OnFBEvent(Sender: TObject; EventName: string;
  EventCount: longint; var CancelAlerts: boolean);
begin
  Memo1.Lines.Add(EventName+' произошло '+IntToStr(EventCount)+' раз.');
end;

Монитор событий прекращает мониторинг, когда связанный TIBConnection отключается от БД, и не перезапускается автоматически. Используйте обработчики событий TIBConnection.AfterConnect и TIBConnection.BeforeDisconnect для автоматического запуска и остановки мониторинга.

Сервер базы данных отправляет события всем соединениям, зарегистрированным для этих событий, кроме тех, которые созданы самим соединением. События отправляются после завершения транзакции. Откат транзакции отменит все события, созданные в этой транзакции. fbeventstest.pp в корневом каталоге fcl packages/fcl-db/examples/ представляет собой тестовую/демонстрационную программу, которая создает хранимую процедуру для отправки события с произвольным именем и использует второе соединение для мониторинга отправленных событий.

Warning: TFBEventMonitor создает поток для мониторинга входящих событий. На Unix включают cthreads или любой другой менеджер потоков.

См. также


From the Free Pascal wiki, page "TFBEventMonitor/ru", as it stood on 2019-10-12 after a change by Zoltanleo, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Edited on wiki.freepascal.org by 1 person, 2019

From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.

WhenWhoWhat changed
ZoltanleoCreated page
Zoltanleo

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.