Home

Grundsätzliches
Installation
Konfiguration
Erste Schritte
Laufzeitschalter
Textdateien
Systemfunktionen
Tabellenfunktionen
Indexfunktionen
Volltext-Indizierung
Memos und Blobs
Semaphoren-Konzept

Support Datenbank
Einführungskurs

Programmsteuerung über tdbengine.ini

Jedesmal, wenn tdbengine gestartet wird, liest das Programm zunächst die Datei tdbengine.ini. Über diese Datei wird das Verhalten von tdbengine weitgehend definiert. Sie muss im gleichen Verzeichnis sein wie tdbengine (bzw. tdbengine.exe).

tdbengine.ini wird im Format von Windows-Konfigurationsdateien gestaltet, die in einzelnen Abteilungen Zeilen der Form "Schlüssel=Wert" enthält. Die Abteilungen werden durch Begriffe in eckigen Klammern definiert.

Der erste Teil unter der Abteilung [globals] beinhaltet die allgemeinen Einstellungen. Folgende Einträge sind möglich (bitte beachten Sie Groß/Kleinschreibung):

Abschaltung der cgi-Aktivitäten unter der tdbengine

stopcgi=0|1
location=url

Ist stopcgi auf 1 gesetzt, so wird kein CGI-Programm ausgeführt, sondern die unter location angegebene Seite angezeigt. Ist keine location angegeben, so erfolgt die Ausgabe "cgi-execution ist stopped".

Definition des globalen Semaphoren, der verwendet wird, wenn für ein Programm kein eigener Semaphor eingerichtet wird

sema=name
timeout=xxxxx
overrun=url

Der Name darf maximal 64 Zeichen beinhalten. Bevor des CGI-Programm ausgeführt wird, wartet die tdbengine, bis der Semaphor mit dem angegebenen Namen frei wird, um ihn dann seinerseits zu belegen. Derzeit handelt es sich dabei ausschließlich um binäre Semaphoren, sie können also immer nur von einem Prozeß genutzt werden. Ein solcher Semaphor stellt also sicher, daß immer nur ein Prozess gleichzeitig aktiv ist. Das Semaphorenkonzept ersetzt die Netzwerkroutinen der TurboDatenbank. Sollen Datenbanken gleichzeitig mit der Netzwerkversion des VDP (bzw. der TurboDatenbank) genutzt werden, so ist ein spezielle Mehrplatzversion der tdbengine erhältlich.

Hinweis: Die Steuerung über Semaphoren ist wesentlich schneller als das herkömmliche File- und Record-Locking.

Erfolgt die Freigabe nicht innerhalb der duch timeout (Millisekunden) angegeben Zeit, so wird die Ausführung abgebrochen und statt dessen die in overrun angegebene Seite ausgeführt.

Mit dem Namen "nosema" wird gekennzeichnet, daß für das CGI-Programm kein Semaphor eingerichtet wird.

Tip: Reine Datenbank-Abfrage-Systeme wie Lexikon-Suchen etc. benötigen keine Semaphoren. Nur wenn gleichzeitig schreibende Zugriffe auf Datenbestände erfolgen, müssen Semaphoren eingerichtet werden.

Logfile-Führung einschalten

logcgi=0|1

Wird logcgi auf 1 gesetzt, so wird jeder CGI-Aufruf in der Datei cgi.log (im Verzeichnis der tdbengine) protokolliert: Datum und Zeit des Aufrufs, Zeit für die Datenübertragung zum CGI-Programm, Ausführungszeit, Zeit für die Datenübertragung zum Klienten, Name des Programms.

Logfile festlegen

log=<Pfad zum Logfile>

Normalerweise wird das Logfile im gleichen Verzeichnis, in dem sich auch die tdbengine befindet, unter dem Namen "cgi.log" angelegt. Dies kann hiermit überschrieben werden. Damit ist es möglich, dem tdbengine-Verzeichnis restriktive Rechte zu erteilen.

CGI-Puffer definieren

cgibuf=nnnn

Damit eine schlechte(=langsame) Übertragung zu einem Klienten nicht zu überflüssigen Sperren führt, puffert die tdbengine die Ausgaben an den Klienten. nnnn ist die Größe des Puffers in Bytes (Minimum = 1024).

Verzeichnisse festlegen

libpath=Suchpfad

Damit kann man einen Suchpfad eingeben, der verwendet wird, wenn in ein Programm mit USES auf Bibliotheken zugegriffen wird und dabei kein kompletter Pfad angegeben wird. Die einzelnen Komponenten des Suchpfads können mit ";" oder ":" getrennt werden.

semadir=Verzeichnis für Semaphoren

In diesem Verzeichnis werden die Semaphoren als Dateien angelegt. Vorgabe ist ./

Default-Werte

Folgende Werte sind voreingestellt, wenn keine tdbengine.ini vorhanden ist oder die entsprechenden Einträge unter [globals} fehlen:

[globals]

stopcgi=0
sema=cgi
timeout=10000
logcgi=1
log=<Installationverzeichnis>/log.cgi
semadir=./
libpath=
cgibuf=65535

Programmbezogenene Einträge

Für jedes Programm kann eine eigene Abteilung definiert werden, deren Einträge dann die unter [globals] überschreiben. Folgende Einträge sind hier zulässig:

stopcgi
location
sema
timeout
overrun
cgibuf
log

Der Name der Abteilung lautet wie der Programmname ohne Extension.

Hinweis: stopcgi überschreibt den gleichen Wert aus [globals] nur, wenn dieser dort mit 0 festgelegt ist, andernfalls sind alle Programme gestoppt.

Beispiel:

Eine einfache tdbengine.ini könnte beispielweise so aussehen:

[globals]

stopcgi=0
location=http://my.host.de/reconstruction.html
sema=cgi
timeout=5000
overrun=http://my.host.de/overrun,html
logcgi=1
log=/var/log/tdbengine.log
libpath=/home/tdbengine/utils:/dos/c/vdp/lib
semadir=sema

[meinprogramm]

sema=sonderfall
timeout=1000
overrun=http://www.irgendwo.com/ueberlauf.html
cgibuf=200000
...

Lokale Konfigurationsdateien

Normalerweise verwendet die tdbengine die Konfigurationsdatei aus dem gleichem Verzeichnis, in dem auch das ausführbare Programm selbst liegt.

Bevor ein Programm ausgeführt wird, wechselt die tdbengine in dasjenige Verzeichnis, in dem das Programm enthalten ist. Befindet sich in diesem Verzeichnis eine Datei tdbengine.ini, so wird diese als
(ausschließliche) Konfigurationsdatei verwendet.

Das hat viele Vorteile:

* lokale Konfigurationsdateien sind übersichtlicher
* die Konfigurationsdatei kann für ein Projekt maßgeschneidert werden
* bei der Weitergabe an Dritte ist die Konfiguration im Projekt enthalten
 

Tipps Tipps Tipps

Beispiel: Während einer Reorganisation der Datenbank soll kein CGI-Programm laufen. Das kann ganz einfach mit folgendem Programmfragment erreicht werden:

VARDEF ini : STRING

ini:='/home/tdbengine/bin/tdbengine.ini'
SetIdent(ini,'globals.stopcgi','1')
pause(100) / sicher ist sicher
...
// hier wird reorganiisiert
...
SetIdent(ini,'globals.stopcgi','0')

Hierzu muss freilich dem anonymen http-user ein Schreibrecht auf tdbengine.ini eingeräumt worden sein.