Datenbankmethode On Server Open Connection

4D - Documentation   Français   English   German   4D Server, Inhalt   Index   Back   Previous   Next

Version 6.8 (Geändert)


Wann wird die Datenbankmethode On Server Open Connection aufgerufen?


Die Datenbankmethode On Server Open Connection wird einmal auf dem Server-Rechner aufgerufen, wenn sich ein Client-Rechner anmeldet. Diese Datenbankmethode wird ausschließlich in der 4D Server Umgebung aufgerufen.

4D Client

Mit 4D Client wird die Datenbankmethode On Server Open Connection immer aufgerufen, wenn:

4D Client sich anmeldet (weil der Prozess Benutzerumgebung startet)

4D Client die Designumgebung öffnet (weil der Prozess Design startet)

4D Client über den Befehl New Process einen nicht-lokalen Prozess startet

Ein nicht-lokaler Prozess über ein Menü oder das Dialogfenster Methode ausführen aufgerufen wird.

Bei den Aktionen mit 4D Client starten zwei Prozesse —Einer auf dem Client-Rechner, der andere auf dem Server-Rechner. Auf dem Client-Rechner führt der Prozesscode aus und sendet Anfragen an 4D Server. Auf dem Server-Rechner verwaltet der Prozess die Datenbankumgebung für den Client-Prozess (z.B. akutelle Auswahlen für den Benutzerprozess) und beantwortet Anfragen, die von dem Prozess auf dem Client-Rechner gesendet wurden. Von daher wird der Prozess, der auf dem Server läuft, Verbindungsprozess genannt. Er führt im Grunde genommen dasselbe aus, wie der Prozess auf dem Rechner im Einzelplatzbetrieb, mit dem Unterschied, dass er über das Netzwerk läuft.

4D Insider

Melden Sie sich von 4D Insider aus an 4D Server an, startet auf dem Server-Rechner ein Verbindungsprozess für die Arbeitsumgebung von 4D Insider. Dieser Prozess beantwortet die Anfragen, die 4D Insider sendet.

Auf 4D Open basierende Anwendungen

Jedes Mal, wenn sich eine auf 4D Open-basierende Anwendung an 4D Server anmeldet, startet ein Verbindungsprozess auf dem Server. Dieser Prozess beantwortet die Anfragen, die über 4D Open gesendet werden und verwaltet den Datenbankbereich dieser Verbindung (z.B. aktuelle Auswahl).

Wichtig: Web Verbindungen lösen nicht die Datenbankmethode On Server Open Connection aus. Meldet sich ein Web Browser an 4D Server an, startet die Datenbankmethode On Web Autentication -sofern vorhanden und/oder die Datenbankmethode On Web Connection. Weitere Informationen dazu finden Sie im Handbuch 4th Dimension Programmiersprache im Kapitel Web Server.

Wichtig: Startet eine Serverprozedur, wird nicht die Datenbankmethode On Server Open Connection ausgelöst. Serverprozeduren sind Serverprozesse und keine Verbindungsprozesse. Sie führen Code auf dem Server-Rechner aus, beantworten jedoch keine Anfragen von 4D Clients oder anderen Clients an 4D Server.

Wie wird die Datenbankmethode On Server Open Connection aufgerufen?


Die Datenbankmethode On Server Open Connection wird auf dem 4D Server-Rechner innerhalb des Verbindungsprozesses ausgeführt, der die Anweisung gibt, die Methode aufzurufen.

Beispiel: Meldet sich ein 4D Client an eine Datenbank auf 4D Server an, starten die Prozesse Benutzerumgebung und Design und Clienteintragung für diesen Client. Die Datenbankmethode On Server Open Connection wird also dreimal ausgeführt —einmal innerhalb des Verbindungsprozesses Benutzerumgebung, einmal innerhalb des Verbindungsprozesses Clienteintragung und einmal innerhalb des Verbindungsprozesses Design. Sind diese Prozesse jeweils der sechste, siebte und achte gestartete Prozess auf dem Server-Rechner, gibt die Funktion Current process jeweils 6, 7 und 8 zurück, wenn Sie Current process von der Datenbankmethode On Server Open Connection aufrufen.

Beachten Sie, dass die Datenbankmethode On Server Open Connection auf dem Server-Rechner ausgeführt wird. Sie läuft im Verbindungsprozess ab, der auf dem Server läuft, unabhängig vom Prozess auf der Client-Seite. Außerdem ist der Verbindungsprozess in dem Moment, wo die Methode ausgelöst wird, noch nicht benannt. (Der Befehl PROCESS PROPERTIES gibt zu diesem Zeitpunkt nicht den Namen des Verbindungsprozesses zurück).

Die Datenbankmethode On Server Open Connection hat keinen Zugriff auf die Tabelle Prozessvariablen des Prozesses auf der Client-Seite, da diese Tabelle auf dem Client-Rechner und nicht auf dem Server-Rechner liegt.

Greift die Datenbankmethode On Server Open Connection in einer interpretierten Datenbank auf eine Prozessvariable zu, läuft sie in einer eigenen und dynamisch erstellten Tabelle Prozessvariablen für den Verbindungsprozess ab. Da die On Server Close Connection Database Method unter Umständen im gleichen Verbindungsprozess ausgelöst wird, nehmen Sie vielleicht an, dass Sie Informationen zwischen den beiden Methoden über Prozessvariablen verwalten können. Das funktioniert nicht im kompilierten Modus.

In einer komplierten Datenbank teilt sich die Datenbankmethode On Server Open Connection zusammen mit anderen Datenbankmethoden sowie Triggern eine gemeinsame Tabelle Prozessvariablen, die auf dem Server-Rechner verwaltet wird. Auf diese Weise kann der kompilierte Code laufen und der Speicherverbrauch wird reduziert. Sie können einerseits von einer Datenbankmethode oder einem Trigger aus auf jede Prozessvariable zugreifen. Andererseits wird Speicherplatz gespart, denn eine eigene Prozesstabelle pro Datenbankmethode sowie Trigger würde sowohl Speicherplatz als auch Startzeit beanspruchen.

Fazit: Stützen Sie sich beim Ausführen der Datenbankmethode On Server Open Connection und On Server Close Connection Database Method nicht auf Prozessvariablen. Verwenden Sie Daten, die in Interprozessvariablen oder in einer Tabelle gespeichert sind.

4D Server übergibt der Datenbankmethode On Server Open Connection drei Parameter vom Typ Lange Ganzzahl und erwartet ein Ergebnis vom Typ Lange Ganzzahl. Die Methode muss deshalb ausdrücklich mit drei Parametern vom Typ Lange Ganzzahl deklariert werden und dem Funktionsergebnis vom Typ Lange Ganzzahl:

   C_LONGINT($0;$1;$2;$3)

Geben Sie keinen Wert in $0 zurück, d.h. die Variable ist undefiniert oder gegen Null initialisiert, nimmt 4D Server an, dass die Datenbankmethode die Verbindung akzeptiert. Akzeptieren Sie die Verbindung nicht, geben Sie in $0 einen Wert zurück, der nicht Null ist.

Die drei Parameter für die Datenbankmethode geben folgende Informationen zurück:

ParameterBeschreibung
$1ID Nummer für Benutzer, die 4D Server intern zur Identifikation
des Benutzers verwendet.
$2ID Nummer für Verbindung, die 4D Server intern zur Identifikation einer
Verbindung verwendet.
$3ID Nummer für Netzwerkprotokoll, die 4D Server intern verwendet.

Hinweis: Ab 4D Server Version 6.8 gibt der Parameter $3 immer 2 oder 29 zurück.

Diese drei ID Nummern sind nicht direkt als Informationsquellen einsetzbar, z.B. um sie in einem 4D Befehl als Parameter zu übergeben. Sie ermöglichen jedoch, einen Verbindungsprozess zwischen der Datenbankmethode On Server Open Connection und der Datenbankmethode On Server Close Connection eindeutig zu identifizieren. Die Kombination dieser drei Werte ist zu jedem Moment einer Server Sitzung einmalig. Ist diese Information in einer Interprozess-Array bzw. Tabelle gespeichert, können beide Datenbankmethoden Informationen austauschen. Im Beispiel am Ende dieses Abschnitts, verwenden die beiden Datenbankmethoden diese Information, um Datum und Uhrzeit für Beginn und Ende einer Verbindung zum gleichen Datensatz einer Tabelle zu speichern.

Beispiele

1. Dieses Beispiel zeigt, wie mit der Datenbankmethode On Server Open Connection und der On Server Close Connection Database Method in der Datenbank ein Logbuch der Verbindung verwaltet wird. Die Tabelle [Server Log] wird zum Auffinden der Verbindungsprozesse verwendet.

Die hier gespeicherte Information wird von der Datenbankmethode On Server Open Connection und der Datenbankmethode On Server Close Connection wie folgt verwaltet:

      ` Datenbankmethode On Server Open Connection
   C_LONGINT($0;$1;$2;$3)
      ` Erstelle eine Datensatz [Logbuch]
   CREATE RECORD([Logbuch])
   [Logbuch]Log Nr:=Sequence number([Logbuch])
      ` Sichere Anmeldedatum und Anmeldezeit
   [Logbuch]Anmeldedatum:=Current date
   [Logbuch]Anmeldezeit:=Current time
      ` Sichere die Verbindungsinformation
   [Logbuch]Benutzer Nr:=$1
   [Logbuch]Verbindung Nr:=$2
   [Logbuch]NC Nr:=$3
   SAVE RECORD([Logbuch])
        ` Gibt keinen Fehler zurück, so dass die Verbindung weiterlaufen kann
   $0:=0
      ` Datenbankmethode On Server Close Connection
   C_LONGINT($1;$2;$3)
      ` Finde wieder Datensatz [Logbuch]
   QUERY([Logbuch];[Logbuch]Benutzer Nr=$1;*)
   QUERY([Logbuch]; & ;[Logbuch]Verbindung Nr=$2;*)
   QUERY([Logbuch]; & ;[Logbuch]NC Nr=$3;*)
   QUERY([Logbuch]; & ;[Logbuch]Prozess Nr=0)
      ` Sichere Abmeldedatum und -zeit
   [Logbuch]Abmeldedatum:=Current date
   [Logbuch]Abmeldezeit:=Current time
      ` Sichere die Prozessinformation
   [Logbuch]Prozess Nr:=Current process
   PROCESS PROPERTIES([Logbuch]Prozess Nr;$vsProzName;$vlProzStatus;$vlProzZeit)
   [Logbuch]Prozeß Name:=$vsProzName
   SAVE RECORD([Logbuch])

Nachfolgend sehen Sie einige Einträge in [Logbuch] mit mehreren 4D Client Anbindungen und einer 4D Insider Anbindung:

2. Im folgenden Beispiel kann zwischen 2 und 4 Uhr A.M. keine neue Verbindung hergestellt werden:

      ` Datenbankmethode On Server Open Connection
   C_LONGINT($0;$1;$2;$3)

   If((?02:00:00?<=Current time)&(Current time<?04:00:00?))
      $0:=22000
   Else
      $0:=0
   End if

Referenz

Datenbankmethode On Server Close Connection, Datenbankmethoden.


4D - Documentation   Français   English   German   4D Server, Inhalt   Index   Back   Previous   Next