Datenbankmethode On Server Open Connection

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

Version 11.2 (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 remote 4D anmeldet. Diese Datenbankmethode wird ausschließlich in der 4D Server Umgebung aufgerufen.

Die Datenbankmethode On Server Open Connection wird immer aufgerufen, wenn:

Ein remote 4D sich anmeldet (weil der Prozess Anwendung startet)

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

Ein remote 4D über die Funktion New Process, über einen Menübefehl oder das Dialogfenster Methode ausführen einen nicht-lokalen Prozess startet.

Bei den Aktionen mit remote 4D starten drei Prozesse — Einer auf dem Client-Rechner und zwei weitere auf dem Server-Rechner. Auf dem Client-Rechner führt der Prozess Code aus und sendet Anfragen an 4D Server. Auf dem Server-Rechner verwaltet Client-Prozess die Datenbankumgebung für den Client-Prozess (z.B. aktuelle Auswahl und Datensatz sperren für Benutzerprozesse) und beantwortet Anfragen, die vom Prozess auf dem Client-Rechner gesendet wurden. Der 4D Client Datenbankprozess ist für die Überwachung des entsprechenden 4D Client Prozesses zuständig.

Wichtig: Web-Verbindungen und SQL-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. Empfängt 4D Server eine SQL Anfrage, wird die Datenbankmethode On SQL Authentication - sofern vorhanden, aufgerufen. Weitere Informationen dazu finden Sie im Handbuch 4D Programmiersprache im Kapitel Datenbankmethoden.

Wichtig: Startet eine Serverprozedur, wird NICHT die Datenbankmethode On Server Open Connection ausgelöst. Serverprozeduren sind Server- und keine Client-Prozesse. Sie führen Code auf dem Server-Rechner aus, beantworten jedoch keine Anfragen von remote 4D 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 4D Client-Prozesses ausgeführt, der die Anweisung gibt, die Methode aufzurufen.

Beispiel: Meldet sich ein remote 4D an eine interpretierte Datenbank auf 4D Server an, starten standardmäßig die Prozesse Benutzer, Design und Registrierung für diesen Client. Die Datenbankmethode On Server Open Connection wird also dreimal ausgeführt — einmal innerhalb des Anwendungsprozesses, ein zweites Mal innerhalb des Client Registrierungsprozesses und ein drittes Mal innerhalb des Prozesses Design. Sind diese Prozesse jeweils der sechste, siebte und achte gestartete Prozess auf dem Server-Rechner und rufen Sie Current process innerhalb der Datenbankmethode On Server Open Connection auf, gibt die Funktion Current process jeweils 6, 7 und 8 zurück.

Beachten Sie, dass die Datenbankmethode On Server Open Connection auf dem Server-Rechner ausgeführt wird. Sie läuft im 4D Client Prozess ab, der auf dem Server läuft, unabhängig vom Prozess auf der Client-Seite. Außerdem ist der 4D Client Prozess in dem Moment, wo die Methode ausgelöst wird, noch nicht benannt. (Der Befehl PROCESS PROPERTIES gibt zu diesem Zeitpunkt nicht den Namen des 4D Client Prozesses 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 auf eine Prozessvariable zu, läuft sie in einer eigenen und dynamisch erstellten Tabelle Prozessvariablen für den 4D Client Prozess ab.

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 und mit dem Funktionsergebnis vom Typ Lange Ganzzahl deklariert werden:

   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
von Benutzern verwendet.
$2ID Nummer für Verbindung, die 4D Server intern zur Identifikation einer
Verbindung verwendet.
$3Obsolet: Gibt immer 0 zurück, muss aber deklariert werden.

Diese 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 4D Client Prozess zwischen der Datenbankmethode On Server Open Connection und der Datenbankmethode On Server Close Connection eindeutig zu identifizieren. Die Kombination dieser 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 Datenbankmethode On Server Close Connection 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([Server_Log])
   [Server_Log]Log_Nr:=Sequence number([Server_Log])
      ` Sichere Anmeldedatum und Anmeldezeit
   [Server_Log]Anmeldedatum:=Current date
   [Server_Log]Anmeldezeit:=Current time
      ` Sichere die Verbindungsinformation
   [Server_Log]Benutzer_Nr:=$1
   [Server_Log]Verbindung_Nr:=$2
   SAVE RECORD([Server_Log])
        ` 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 [Server_Log]
   QUERY([Server_Log];[Server_Log]Benutzer_Nr=$1;*)
   QUERY([Server_Log]; & ;[Server_Log]Verbindung_Nr=$2;*)
   QUERY([Server_Log]; & ;[Server_Log]Prozess_Nr=0)
      ` Sichere Abmeldedatum und -zeit
   [Server_Log]Abmeldedatum:=Current date
   [Server_Log]Abmeldezeit:=Current time
      ` Sichere die Prozessinformation
   [Server_Log]Prozess_Nr:=Current process
   PROCESS PROPERTIES([Server_Log]Prozess_Nr;$vsProzName;$vlProzStatus;$vlProzZeit)
   [Server_Log]Prozessname:=$vsProzName
   SAVE RECORD([Server_Log])

Nachfolgend sehen Sie einige Einträge in [Server_Log] mit mehreren remote Anbindungen:

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   Japanese   4D Server, Inhalt   Index   Back   Previous   Next