Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Scheduler als Dienst mit Konfiguration in DB (https://www.delphipraxis.net/81557-scheduler-als-dienst-mit-konfiguration-db.html)

hoika 29. Nov 2006 12:01

Datenbank: FB • Version: 1.5 • Zugriff über: sag ich nicht ;)

Scheduler als Dienst mit Konfiguration in DB
 
Hallo #,

mein erster Dienst läuft *freu* :cheers:
Bisher legt er nur im Temp Dateien an,
aber immerhin ;

Ich muss "geplante Tasks" nachbauen,
weil der entsprechenden Firma keine Admin-Rechte
auf dem Server erlaubt sind (ist ne Zweigstelle).

Meine Überlegung war folgende,
eine Dienst läuft (was er auch schon macht),
er connected sich alle x Minuten mit der DB,
liest die Konfiguration aus und handelt entsprechend.
Dann wird ein Log geschrieben (in die DB und in den Speicher)
und der dienst legt sich wieder schlafen (delay oder sleep ist egal).

Die komplette Konfiguration erfolgt auf einem anderen Rechner.

Nun mein Problem,
wie kann ich am besten mitbekommen,
dass sich die Konfiguration geändert hat.

1. Events
aber traue mich nicht ;)
FB1.5 ist nur eine der DB's, mit denen das laufen soll.

2. TCP
Socket, habe ich auch noch nie gemacht

3. bei jedem Aufwachen Testen, ob was geändert wurde
(das geht schnell, ich schreibe eh ein Log der Änderungen
und kann das mit dem Datum der letzten Konfigurationsänderung vergleichen)

Die Konfiguration ändert sich ausserdem kaum.


Was meint ihr ?
Wie geht man an sowas ran ?


Heiko
PS: muss mal den Dienst anhalten, habe nur ne 140GB Platte ;)

alzaimar 29. Nov 2006 12:15

Re: Scheduler als Dienst mit Konfiguration in DB
 
Billiger Trick:

Auf deiner DB (egal welche) hast Du eine Tabelle "LastUpdate". Dort steht drin, welche Daten wann zum letzten mal angefasst wurden. Z.B. für jede Tabelle eine Zeile und ein Trigger auf die jeweiligen Tabellen, damit sie die Zeit in die "LastUpdate"-Tabelle reinlesen.

Dein Dienst wacht 1x pro Minute auf, liest die "LastUpdate"-Tabelle, schaut nach, ob sich etwas geändert hat, und handelt entsprechend.

Pronto.

hoika 29. Nov 2006 12:40

Re: Scheduler als Dienst mit Konfiguration in DB
 
Hallo,

So wollte ich es ja auch machen, naja fast ;)
Da ich eh alle Änderungen protokolliere,
suche einfach per Max() das letzte Änderungsdatum
und vergleiche mit Datum, wann der Dienst das letzte
mal die Konfiguration geladen hatte (aleo dessen letztem Änderungsdatum).

Die Frage war, geht es eleganter,
wobei der obige Ansatz den Vorteil hat, einfach zu sein.


Heiko

alzaimar 29. Nov 2006 13:31

Re: Scheduler als Dienst mit Konfiguration in DB
 
hoika, mit "max" erzeugst Du nur unnötigen Overhead im Server... Und wenn Du "MAX" verwenden willst, vergiss den Index auf der Spalte nicht, dann geht das nämlich fix :zwinker:

hoika 29. Nov 2006 18:54

Re: Scheduler als Dienst mit Konfiguration in DB
 
Hallo,

mach ich nicht ;)
Jede Query kommt zuerst zum ibplanalyzer.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz