Difference between revisions of "TFBEventMonitor/ru"
(Created page with "{{TFBEventMonitor}} {{Infobox databases}} '''TFBEventMonitor''' image:tfbeventmonitor.png in the FBEventMonitor unit is used to monitor named events sent from the Firebi...") |
|||
Line 1: | Line 1: | ||
{{TFBEventMonitor}} | {{TFBEventMonitor}} | ||
{{Infobox databases}} | {{Infobox databases}} | ||
− | |||
− | + | '''TFBEventMonitor''' [[image: tfbeventmonitor.png]] из модуля FBEventMonitor используется для мониторинга именованных событий, отправленных с сервера базы данных [[Firebird]]. События обычно генерируются триггерами при определенных операциях с базой данных. | |
+ | Использование событий означает, что вы можете избежать регулярного опроса базы данных на предмет изменений статуса и могут быть полезны в случаях высокой нагрузки. | ||
− | == | + | == Пример == |
− | + | Обновление memo получаемыми событиями. Мониторинг событий с E1 по E7. | |
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure TForm1.StartMonitor; | procedure TForm1.StartMonitor; | ||
begin | begin | ||
EventsM:=TFBEventMonitor.create(Self); | EventsM:=TFBEventMonitor.create(Self); | ||
EventsM.Connection:=IBConnection1; | EventsM.Connection:=IBConnection1; | ||
− | EventsM.Events.CommaText:='"E1",E2,E3,E4,"E5","E6","E7"'; // | + | EventsM.Events.CommaText:='"E1",E2,E3,E4,"E5","E6","E7"'; //кавычки игнорируются |
EventsM.OnEventAlert:=OnFBEvent; | EventsM.OnEventAlert:=OnFBEvent; | ||
− | EventsM.RegisterEvents; // | + | EventsM.RegisterEvents; // активирует IBConnection1, если он до сих пор не подсоединен к БД |
end; | end; | ||
Line 28: | Line 28: | ||
EventCount: longint; var CancelAlerts: boolean); | EventCount: longint; var CancelAlerts: boolean); | ||
begin | begin | ||
− | Memo1.Lines.Add(EventName+' | + | Memo1.Lines.Add(EventName+' произошло '+IntToStr(EventCount)+' раз.'); |
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | Монитор событий прекращает мониторинг, когда связанный TIBConnection отключается от БД, и не перезапускается автоматически. Используйте обработчики событий TIBConnection.AfterConnect и TIBConnection.BeforeDisconnect для автоматического запуска и остановки мониторинга. | |
− | + | Сервер базы данных отправляет события всем соединениям, зарегистрированным для этих событий, кроме тех, которые созданы самим соединением. События отправляются после завершения транзакции. Откат транзакции отменит все события, созданные в этой транзакции. <code>fbeventstest.pp</code> в корневом каталоге fcl packages/fcl-db/examples/ представляет собой тестовую/демонстрационную программу, которая создает хранимую процедуру для отправки события с произвольным именем и использует второе соединение для мониторинга отправленных событий. | |
− | {{Warning|TFBEventMonitor | + | {{Warning|TFBEventMonitor создает поток для мониторинга входящих событий. На Unix включают cthreads или любой другой менеджер потоков.}} |
− | == | + | == См. также == |
* [[Firebird|Using Firebird with FPC/Lazarus sqldb.]] | * [[Firebird|Using Firebird with FPC/Lazarus sqldb.]] | ||
* Firebird documentation/readme files on events | * Firebird documentation/readme files on events |
Latest revision as of 16:44, 12 October 2019
│
English (en) │
русский (ru) │
References:
Tutorials/practical articles:
Databases |
TFBEventMonitor из модуля FBEventMonitor используется для мониторинга именованных событий, отправленных с сервера базы данных Firebird. События обычно генерируются триггерами при определенных операциях с базой данных.
Использование событий означает, что вы можете избежать регулярного опроса базы данных на предмет изменений статуса и могут быть полезны в случаях высокой нагрузки.
Пример
Обновление memo получаемыми событиями. Мониторинг событий с E1 по E7.
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/ представляет собой тестовую/демонстрационную программу, которая создает хранимую процедуру для отправки события с произвольным именем и использует второе соединение для мониторинга отправленных событий.
Предупреждение: TFBEventMonitor создает поток для мониторинга входящих событий. На Unix включают cthreads или любой другой менеджер потоков.
См. также
- Using Firebird with FPC/Lazarus sqldb.
- Firebird documentation/readme files on events
- Presentation on Firebird events