![]() Home Benchmarks Historie Forum Download Helpware Insider Dokumentation Kurs Provider-Infos Impressum |
tdbengine -
news vom 18.12.1999
Seit Sonntag, dem 19.12.1999, liegt nun eine neue Version der tdbengine
im Download-Bereich.
Hier ein kurzer Überblick über die Änderungen gegenüber der Vorgängerversion: Neue und geänderte Funktionen CGIExec(commandline : STRING [; s_timeout : REAL]) : REAL
Diese Funktion führt ein externes Programm aus.
Besonderheiten Win9x, WinNT: Das Programm wird direkt gestartet. Mit s_timeout kann die maximal verfügbare
Zeit (in Sekunden) angegeben werden.
Beispiel: richtig: (pkzip25.exe befindet sich in /home/tdbengine/) CGICloseBuffer .. Puffer leeren
richtig: (cmd.exe befindet sich in /home/tdbengine/) ...
falsch: (cmd.exe und pkzip25 befinden sich in /home/tdbengine/) ...
richtig: (pkzip25.exe befindet sich in /home/tdbengine/) CGIExec('pkzip25.exe -add backup.zip *',-1) .. erzeugt backup.zip ohne Ausgabe Einschränkung: CGIExec kann (zumindest problemlos)
nur echte 32-Bit Anwendungen ausführen.
Linux: Die commandline von CGIExec wird an die Shell des Internet-Klienten mit dessen Rechten übergeben. Hinweis: Hier ist die Ausgabeumleitung der empfohlene Weg, die Ausgaben des aufgerufenen Programms zu unterdrücken. Beispiel: CGICloseBuffer .. Puffer leeren
..
..
Hinweis: Sie sollten CGIExec immer mit besonderer Vorsicht einsetzen.
VarName(VAR x) : STRING
Diese Funktion liefert der Deklarationsnamen der Variablen x. Damit kann man recht schöne Sachen machen, wie zum Beispiel eine Menge Code einsparen. Beispiel: Gut: VARDEF Name, Vorname, Strasse, PLZ, Ort : STRING
Besser: VARDEF Name, Vorname, Strasse, PLZ, Ort : STRING
Noch besser: VARDEF Name, Vorname, Strasse, PLZ, Ort : STRING
TestSel(selection : STRING) : REAL
Liefert 0, wenn es sich bei dem Argument um eine gültige Selektion
handelt, andernfalls der tdbengine-Fehlercode.
SetCGILog(msg : STRING) : REAL
Mit dieser Funktion kann man die tdbengine veranlassen, einen erweiterten
Log-Eintrag zu schreiben. Die genaue Diskussion erfolgt im Kapitel Debugging.
Der Rückgabewert ist immer 0.
SetFields(replacestr : STRING) : REAL
Diese Funkion erlaubt das Setzen von Feldinhalten der Form: "Feld:=Ausdruck,Feld:=Ausdruck..."
CGIBuffer(mode : REAL) : REAL
Mit dieser Funktion kann man die Pufferung der CGI-Ausgabe ein- und
ausschalten. Nicht zu verwechseln mit CGICloseBuffer.
CGIBuffer(0) -> keine Pufferung
Hinweis: Normalerweise ist die Pufferung der Ausgabe aus Performancegründen
immer eingeschaltet. Der Puffer umfaßt 64 kByte.
Mit dieser Funktion kann in einer bestehenden Ini-Datei ein neuer Wert gesetzt werden, ohne dass hierfür die Datei komplett neu geschreiben werden muß. Sie bildet demnach das Gegenstück zu GetIdent. Mit diesen beiden Funktionen werden Textdateien der folgenden Form bearbeitet: [Gruppe_1]
GetIdent(Inifile,'Gruppe_1.Bezeichner_1') liefert Wert_1
[Gruppe_1]
SetIdent(Inifile,'Gruppe_1.Bezeichner_3','Neuer Wert') führt zu folgendem Eintrag [Gruppe_1]
SetIdent(Inifile,'Neue_Gruppe.Bezeichner_1','Neuer Wert') führt zu folgendem Eintrag [Gruppe_1]
Der neu gesetzte Wert ist sofort gültig, ein Aufruf von GetIdent(....) liefert also immer den aktuellsten Wert . Achtung: Setdent führt kein File-Locking durch, sondern liest den beim Aufruf aktuellen Stand der Datei. Hinweis: Inidateien sind ein höchst komfortabler und effizienter
Weg zur Verwaltung von nicht-relationalen Daten wie Systemdateien etc.
Der Zugriff auf die einzenen Bezeichner (Idents) erfolgt extrem schnell:
Eine Inidatei wird nur beim ersten Aufruf gelesen, dabei werden sämtliche
darin enthaltenen Informationen in einer sehr schnellen (Baum-)Suchstruktur
abgelegt.
GetEnv liefert bekanntermaßen den Wert der Environment-Variablen mit dem angegebenen Namen. Neu ist, dass nach jedem Aufruf ein Ramtext mit dem Namen "ramtext:environment" zur Verfügung steht, der ebenfalls die Environmentvariable enthält. Damit kann auch auf Einvironment-Variablen zugriffen werden, deren Inhalt 255 Zeichen übersteigt. Beispiel: CgiCloseBuffer
Debugging Fehlerpositionen aufspüren Falls ein CGI-Programm seine Arbeit vorzeitig beendet (abstürzt), aber auch, wenn ein interner Fehler auftritt (beispielsweise bei VAL), schreibt die tdbengine einen entsprechenden Eintrag in die Datei error.msg im Verzeichnis der tdbengine (falls dort ein Schreibrecht eingerichtet wurde). Zusätzlich zur Fehlerart wird die Position des Programms ausgegeben. Sie können die Fehlerstelle im Quelltext bestimmen, wenn Sie auf der Kommandoebene compilieren und die Fehleradresse als zweites Argument angeben: tdbengine test.mod 12345 Das Programm test.mod wird compiliert, und solange die Fehlerstelle
nicht ereicht ist, wird der Quelltext ausgegeben. Die Fehlerstelle befindet
sich also in er letzten ausgegebenen Zeile.
Logfile modifizieren Wenn in der Datei tdbengine.ini unter [globals] das Flag Logcgi=1 Enthalten ist, schreibt tdbengine bei jedem Aufruf einen Eintrag in die Datei cgi.log: Datum - Zeit_1 - Zeit_2 - Zeit_3 - Programm [ - erweiterte Loginformation ] Zeit_1: Aufruf tdbengine, Initialisierung, Übertragung der Informationen
vom Browser
Die erweiterte Log-Information können Sie selbst bestimmen: CgiLog(msg) Cookies Da die Auswertung von Environment-Variablen nicht jedermanns Sache ist, wird die Auswertung der Variablen HTTP_COOKIE jetzt auch von der tdbengine übernommen. Diese stellt die einzelnen Cookies über die Funktion CGIGetParam zur Verfügung: CGIGetParam("cookie.name") liefert den Wert des Cookies mit dem Bezeichner "name". Der sinnvolle Einsatz von Cookies und Sessions wird später in diesem Forum diskutiert. Unterschiede:Linux und Windows Die Versionen der tdbengine für Linux und Windows sind weitgehend identisch, ebenso die verwendeten Dateiformate. Unterschiede treten nur da auf, wo auch das jeweilige Betriebssystem seine Besonderheiten hat Die Timer-Auflösung bei den Semaphoren beträgt bei Linux 1 Sekunde, unter Windows 1/1000 Sekunde, was jedoch in der Praxis keine Rolle spielt. Bei den Dateiattributen, die von den Directory-Funktionen FirstDir und NextDir geliefert werden, wird unter Linux nur "d" (=Directory) gesetzt, dafür werden die Dateirechte komplett ausgegeben. FirstDir, NextDir: Zeichen Anzahl Win9x, WinNT
Linux
64 7
Dateiattribute Dateiattribute
71 12
Dateigröße
Dateigröße
110 9
Zugriffsrechte
128 127 Verzeichnis Verzeichnis Die Funktion ChMod(Dateiname, Rechte : STRING) : REAL setzt unter Linux die Rechte an der Datei neu, je nach den Rechten, mir der diese Funktion ausgeführt wird (also nur als root bzw Besitzer der Datei). Die neuen Rechte werden als 'rwxrwxrwx' angegeben, wobei das erste Trippel für die Rechte des Benutzers, das zweite für die Rechte der Gruppe und das letzte für die Rechte des Rests der Welt gilt. Das Funktionsergebnis liefert den Linux-Fehlerstatus. Hinweis: Neben der wesentlich dedizierteren Rechte-Vergabe ist unter Linux die Unterscheidung der Groß-/Kleinschreibung zu beachten! Im Zuge der Vereinheitlichung der Programme, und weil es sich bei allen Adressierungen im Internet um Unix-Adressierungen handelt, sollten auch unter Windows alle Pfadangaben mit dem normalen Schrägstrich "/" angegeben werden. Die tdbengine akzeptiert beide Schreibweisen. |
Newsletter
|