4D v14.3

Méthode base Sur ouverture connexion serveur

Accueil

 
4D v14.3
Méthode base Sur ouverture connexion serveur

Méthode base Sur ouverture connexion serveur 


 

$1, $2, $3 -> Méthode base Sur ouverture connexion serveur -> $0 
Paramètre Type   Description
$1  Entier long in Numéro d'utilisateur utilisé en interne par 4D Server pour identifier les utilisateurs
$2  Entier long in Numéro de connexion utilisé en interne par 4D Server pour identifier une connexion
$3  Entier long in Obsolète : Retourne toujours 0 (mais doit être déclaré)
$0  Entier long in 0 ou omis = connexion acceptée, autre valeur = connexion refusée

La Méthode base Sur ouverture connexion serveur est appelée une fois sur la machine serveur chaque fois qu’un poste 4D distant 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.

La Méthode base Sur ouverture connexion serveur est appelée à chaque fois que :

  • un 4D distant se connecte (démarrage du process principal)
  • un 4D distant ouvre l’environnement Développement (démarrage du process de développement)
  • un 4D distant démarre un process global (dont le nom de ne commence pas par "$") qui nécessite la création d'un process coopératif sur le serveur (*). Ce process peut être créé avec la commande Nouveau process, une commande de menu ou la boîte de dialogue “Exécuter une méthode” .

Dans chaque cas, plusieurs process démarrent. Un sur la machine client, et un ou deux autres sur la machine serveur (suivant les besoins). Sur la machine client, le process exécute le code et envoie les requêtes à 4D Server. Sur la machine serveur, le process 4D Client (process préemptif) gère l’environnement de base de données du process client (c.-à-d. les sélections courantes et le verrouillage des enregistrements pour le process utilisateur) et répond aux requêtes envoyées par le process exécuté sur la machine cliente. Le process base 4D Client (process coopératif) est chargé de contrôler le process 4D Client correspondant.

(*) A compter de 4D v13, pour des raisons d'optimisation les process serveurs (process préemptif pour les accès au moteur de la base et process coopératif pour l’accès au langage) ne sont créés qu’en cas de nécessité lors de l’exécution du code côté client. Par exemple, voici le détail d’une séquence de code 4D s’exécutant dans un nouveau process client :

  // le process global commence sans nouveau process sur le serveur, comme un process local.
 CREER ENREGISTREMENT([Table_1])
 [Table_1])champ1_1:="Hello world"
 STOCKER ENREGISTREMENT([Table_1]// création ici du process préemptif sur le serveur
  //pas d'appel de Sur ouverture connexion serveur
 $serverTime:=Heure courante(*) // création ici du process coopératif sur le serveur
  // appel de Sur ouverture connexion serveur

Important : Les connexions Web et les connexions SQL 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 ouverture connexion serveur (si elle existe) et/ou la Méthode base Sur connexion Web sont appelées. Lorsque 4D Server reçoit une requête SQL, la Méthode base Sur authentification SQL (si elle existe) est appelée. Pour plus d’informations, reportez-vous à la description de ces méthodes base dans le manuel Langage de 4D.

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 4D Client. 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.

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

Si, par exemple, un 4D distant se connecte à une base 4D Server en mode interprété, il démarre le process utilisateur, le process de développement 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 principal, la deuxième fois dans le process d'inscription du client et la troisième fois dans le process de développement. 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 4D Client 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 4D Client n’est pas encore nommé (INFORMATIONS PROCESS ne retournera pas, à ce moment, le nom du process 4D Client).

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.

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 4D Client.

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
$3Obsolète : Retourne toujours 0 (mais doit être déclaré)

Ces numéros de référence ne sont pas directement utilisables en tant que « 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 4D Client entre la Méthode base Sur ouverture connexion serveur et la Méthode base Sur fermeture connexion serveur. La combinaison de ces 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.

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
 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]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 distantes :

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

 
PROPRIÉTÉS 

Produit : 4D
Thème : Méthodes base
Numéro : 16001
Nom intl. : On Server Open Connection database method

 
HISTORIQUE 

Modifié : 4D v13

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v14 R3)
4D - Langage ( 4D v14 R2)
4D - Langage ( 4D v13.5)
4D - Langage ( 4D v14.3)
4D - Langage ( 4D v14 R4)

Hérité de : Méthode base Sur ouverture connexion serveur ( 4D v12.4)