Méthode base Sur ouverture connexion serveur

4D - Documentation   Français   English   German   Manuel de référence de 4D Server, Sommaire   Manuel de référence de 4D Server, Index   Retour   Précédent   Suivant

version 6.8 (Modifiée)


Quand la Méthode base Sur ouverture connexion serveur est-elle appelée ?

La Méthode base Sur ouverture connexion serveur est appelée une fois sur la machine serveur chaque fois qu'un poste client démarre un process de connexion. La Méthode base Sur ouverture connexion serveur n'est appelée que par 4D Server, à l'exclusion de tout autre environnement 4D.

4D Client

Avec 4D Client, la Méthode base Sur ouverture connexion serveur est appelée à chaque fois que :

4D Client se connecte (démarrage du process principal)

4D Client ouvre l'environnement Structure (démarrage du process de structure)

4D Client démarre un process non local (avec la commande Nouveau process)

Un process non local est démarré par un menu ou par la boîte de dialogue "Exécuter une méthode".

Dans chaque cas, avec 4D Client, deux process démarrent. Un sur la machine client, l'autre sur la machine serveur. Sur la machine client, le process exécute le code et envoie les requêtes à 4D Server. Sur la machine serveur, le process gère l'environnement de base de données du process client (c.-à-d. les sélections courantes pour le process utilisateur) et répond aux requêtes envoyées par le process exécuté sur la machine cliente. C'est la raison pour laquelle le process exécuté sur le serveur est appelé process de connexion : il réalise sur la machine serveur, par le réseau, via une connexion, ce que le process s'exécutant sur le poste client effectuerait si vous étiez en configuration monoposte et non en client/serveur.

4D Insider

Lorsque vous vous connectez à 4D Server à partir de 4D Insider, vous démarrez un process de connexion sur la machine serveur pour maintenir un environnement de travail pour 4D Insider. Ce process répond aux requêtes envoyées par 4D Insider.

Application 4D Open

Chaque fois qu'une application utilisant 4D Open ouvre une connexion à 4D Server, un process de connexion démarre sur la machine serveur. Ce process répond aux requêtes envoyées via 4D Open et gère le contexte de base de données de la connexion (c.-à-d. les sélections courantes).

Important : Les connexions Web ne provoquent pas l'exécution de la Méthode base Sur ouverture connexion serveur. Lorsqu'un navigateur Web se connecte à 4D Server, la Méthode base Sur authentification Web (si elle existe) et/ou la Méthode base Sur connexion Web sont appelées. Pour plus d'informations, reportez-vous à la description de ces méthodes base dans le manuel Langage de 4e Dimension.

Important : Lors du démarrage d'une procédure stockée, la Méthode base Sur ouverture connexion serveur n'est pas appelée. Les procédures stockées sont des process serveur et non des process de connexion. Elles exécutent du code sur la machine serveur mais ne répondent pas aux requêtes échangées par 4D Client (ou d'autres clients) et 4D Server.

Comment la Méthode base Sur ouverture connexion serveur est-elle appelée ?

La Méthode base Sur ouverture connexion serveur est exécutée sur le poste serveur dans le process de connexion qui a provoqué l'appel de la méthode.

Si, par exemple, un 4D Client se connecte à une base 4D Server en mode interprété, il démarre le mode Utilisation, le process de structure ainsi que (par défaut) le process d'inscription du client. La Méthode base Sur ouverture connexion serveur est donc exécutée trois fois de suite. La première fois dans le process de connexion de l'environnement Utilisation (process principal), la deuxième fois dans le process d'inscription du client, et la troisième fois dans le process de connexion de Structure. Si les trois process sont respectivement les 6e, 7e et 8e process démarrés sur la machine serveur, et si vous appelez Numero du process courant dans la Méthode base Sur ouverture connexion serveur, le premier Numero du process courant retourne 6, le deuxième 7 et le troisième 8.

Notez que la Méthode base Sur ouverture connexion serveur s'exécute sur le poste serveur, à l'intérieur du process de connexion sur le serveur. Elle ignore tout du process exécuté sur le client. En outre, au moment où la méthode est appelée, le process de connexion n'est pas encore nommé (INFORMATIONS PROCESS ne retournera pas, à ce moment, le nom du process de connexion).

La Méthode base Sur ouverture connexion serveur n'a pas accès à la table des variables process du process exécuté sur le client. Cette table réside sur le poste client, pas sur le serveur.

Dans le cas d'une base de données en mode interprété, lorsque la Méthode base Sur ouverture connexion serveur accède à une variable process, elle travaille avec une table de variables process particulière, créée dynamiquement pour le process de connexion. Comme la Méthode base Sur fermeture connexion serveur sera finalement appelée dans le même process de connexion, vous pourriez imaginer qu'il est possible de maintenir les informations entre les deux méthodes avec des variables process. Cela ne fonctionnera pas en mode compilé.

Dans une base compilée, la Méthode base Sur ouverture connexion serveur partage, avec d'autres méthodes base et avec les triggers, une table de variables process commune maintenue sur la machine serveur. Cette architecture a deux objectifs : permettre l'exécution du code compilé, et réduire la consommation de mémoire. D'abord, vous pouvez accéder à toutes les variables process dans une méthode base ou dans un process. Il suffit que les variables process « y soient ». Ensuite, la création d'une table process pour chaque méthode base ou trigger serait consommatrice de mémoire et de temps d'initialisation. Conclusion : NE VOUS FIEZ PAS aux variables process lors de l'exécution de la Méthode base Sur ouverture connexion serveur et Méthode base Sur fermeture connexion serveur. Utilisez des données stockées dans les variables interprocess ou dans une table.

4D Server passe trois paramètres de type Entier long à la Méthode base Sur ouverture connexion serveur et attend un résultat Entier long. La méthode doit donc être explicitement déclarée avec trois paramètres Entier long ainsi qu'un retour de fonction Entier long :

   C_ENTIER LONG($0;$1;$2;$3)

Si vous ne retournez pas de valeur dans $0 et donc laissez la variable indéfinie ou initialisée à zéro, 4D Server estime que la méthode base accepte la connexion. Si vous n'acceptez pas la connexion, retournez une valeur non nulle dans $0.

Le tableau ci-dessous détaille les informations fournies par les trois paramètres passés à la méthode base :

ParamètreDescription
$1Numéro d'utilisateur utilisé en interne par 4D Server pour identifier les
utilisateurs
$2Numéro de connexion utilisé en interne par 4D Server pour identifier une
connexion
$3Numéro d'identification du protocole réseau utilisé en interne par 4D Server

Note : A compter de la version 6.8 de 4D Server, le paramètre $3 retourne toujours 2 ou 29.

Ces trois numéros de référence ne sont pas directement utilisables en tant « sources d'information » à passer, par exemple, comme paramètres à une commande 4D. Ils vous fournissent un moyen d'identifier de manière unique un process de connexion entre la Méthode base Sur ouverture connexion serveur et la Méthode base Sur fermeture connexion serveur. La combinaison de ces trois valeurs est unique à tout moment d'une session 4D Server. Si vous stockez cette information dans une table ou un tableau interprocess, les deux méthodes base peuvent échanger des informations. Dans l'exemple présenté à la fin de cette section, les deux méthodes base utilisent cette information pour stocker l'heure et la date du début et de la fin d'une connexion dans le même enregistrement d'une table.

Exemples

(1) L'exemple suivant montre comment maintenir un historique des connexions à la base de données en utilisant la Méthode base Sur ouverture connexion serveur et la Méthode base Sur fermeture connexion serveur. La table [Server Log] (ci-dessous) sert à garder la trace des process de connexion :

L'information stockée dans cette table est gérée par la Méthode base Sur ouverture connexion serveur et la Méthode base Sur fermeture connexion serveur listées ci-dessous :

      ` Méthode base Sur ouverture connexion serveur
   C_ENTIER LONG($0;$1;$2;$3)
      ` Créer un enregistrement [Server Log]
   CREER ENREGISTREMENT([Server Log])
   [Server Log]Log ID:=Numerotation automatique([Server Log])
      ` Enregistrer l'historique Date et Heure
   [Server Log]Log Date:=Date du jour
   [Server Log]Log Time:=Heure courante
      ` Enregistrer l'information sur la connexion
   [Server Log]User ID:=$1
   [Server Log]Connection ID:=$2
   [Server Log]NC ID:=$3
   STOCKER ENREGISTREMENT([Server Log])
        ` Ne retourne pas d'erreur, pour continuer la connexion
   $0:=0
      ` Méthode base Sur fermeture connexion serveur
   C_ENTIER LONG($1;$2;$3)
      ` Chercher l'enregistrement [Server Log]
   CHERCHER([Server Log];[Server Log]User ID=$1;*)
   CHERCHER([Server Log]; & ;[Server Log]Connection ID=$2;*)
   CHERCHER([Server Log]; & ;[Server Log]NC ID=$3;*)
   CHERCHER([Server Log]; & ;[Server Log]Process ID=0)
      ` Enregistrer date et heure de déconnexion
   [Server Log]Exit Date:=Date du jour
   [Server Log]Exit Time:=Heure courante
      ` Enregistrer informations process
   [Server Log]Process ID:=Numero du process courant 
   INFORMATIONS PROCESS([Server Log]Process ID;$vsProcName;$vlProcState;$vlProcTime)
   [Server Log]Process Name:=$vsProcName
   STOCKER ENREGISTREMENT([Server Log])

Voici quelques entrées dans [Server Log] montrant plusieurs connexions 4D Client :

(2) L'exemple suivant interdit toute nouvelle connexion entre 2 et 4 heures du matin.

      ` Méthode base Sur ouverture connexion serveur
   C_ENTIER LONG($0;$1;$2;$3)

   Si((?02:00:00?<=Heure courante)&(Heure courante<?04:00:00?))
      $0:=22000
   Sinon
      $0:=0
   Fin de si

Référence

Méthode base Sur fermeture connexion serveur, Présentation des méthodes base.


4D - Documentation   Français   English   German   Manuel de référence de 4D Server, Sommaire   Manuel de référence de 4D Server, Index   Retour   Précédent   Suivant