# getSession

(No version information available, might only be in Git)

getSession — Connecte à un serveur MySQL

### Description

mysql_xdevapi\getSession(string `$uri`): mysql_xdevapi\Session

Connecte au serveur MySQL.

### Liste de paramètres

`uri`

  L'uri du serveur MySQL, tel que `mysqlx://user:password@host`.

  Format d'URI:

  `scheme://[user[:[password]]@]target[:port][?attribute1=value1&attribute2=value2...`

  - `scheme`: requis, le protocole de connexion

    Dans mysql_xdevapi c'est toujours 'mysqlx' (pour le protocole X)

  - `user`: optionnel, le compte utilisateur MySQL pour l'authentification

  - `password`: optionnel, le mot de passe de l'utilisateur MySQL pour l'authentification

  - `target`: requis, l'instance serveur à laquelle la connexion se réfère:

    * Connexion TCP (nom d'hôte, adresse IPv4 ou adresse IPv6)

    * Chemin de socket Unix (chemin de fichier local)

    * Pipe nommé Windows (chemin de fichier local)

  - `port`: optionnel, le port réseau du serveur MySQL.

    par défaut le port pour le protocole X est 33060

  - `?attribute=value`: cet élément est optionnel et spécifie un dictionnaire de données qui contient différentes options, y compris:

    - L'`auth` (mécanisme d'authentification) attribut tel qu'il se rapporte aux connexions chiffrées. Pour plus d'informations, voir » Options de commande pour les connexions chiffrées. Les valeurs 'auth' suivantes sont supportées: `plain`, `mysql41`, `external`, et `sha256_mem`.

    - L'attribut `connect-timeout` affecte la connexion et non les opérations suivantes. Il est défini par connexion, que ce soit sur un seul hôte ou plusieurs.

      Passer un entier positif pour définir le délai de connexion en secondes, ou passer 0 (zéro) pour désactiver le délai (infini). Ne pas définir connect-timeout utilise la valeur par défaut de 10.

      En relation, les variables d'environnement MYSQLX_CONNECTION_TIMEOUT (délai en secondes) et MYSQLX_TEST_CONNECTION_TIMEOUT (utilisé lors de l'exécution des tests) peuvent être définies et utilisées à la place de connect-timeout dans l'URI. L'option connect-timeout de l'URI a la priorité sur ces variables d'environnement.

    - L'attribut optionnel `compression` accepte ces valeurs: `preferred` (le client négocie avec le serveur pour trouver un algorithme supporté; la connexion est non compressée si un algorithme supporté mutuellement n'est pas trouvé), `required` (comme "preferred", mais la connexion est terminée si un algorithme supporté mutuellement n'est pas trouvé), ou `disabled` (la connexion est non compressée). Par défaut à `preferred`.

      Cette option a été ajoutée dans la version 8.0.20.

    - L'attribut optionnel `compression-algorithms` définit les algorithmes de compression désirés (et leur ordre d'utilisation préféré): `zstd_stream` (alias: zstd), `lz4_message` (alias: lz4), ou `deflate_stream` (alias: deflate ou zlib). Par défaut, l'ordre utilisé (selon la disponibilité du système) est lz4_message, zstd_stream, puis deflate_stream. Par exemple, passer compression-algorithms=[lz4,zstd_stream] utilise lz4 s'il est disponible, sinon zstd_stream est utilisé. Si les deux ne sont pas disponibles alors le comportement dépend de la valeur de compression par exemple, si compression=required alors il échouera avec une erreur.

      Cette option a été ajoutée dans la version 8.0.22.

  Exemple #1 Exemple d'URI

  `mysqlx://foobar
  mysqlx://root@localhost?socket=%2Ftmp%2Fmysqld.sock%2F
  mysqlx://foo:bar@localhost:33060
  mysqlx://foo:bar@localhost:33160?ssl-mode=disabled
  mysqlx://foo:bar@localhost:33260?ssl-mode=required
  mysqlx://foo:bar@localhost:33360?ssl-mode=required&auth=mysql41
  mysqlx://foo:bar@(/path/to/socket)
  mysqlx://foo:bar@(/path/to/socket)?auth=sha256_mem
  mysqlx://foo:bar@[localhost:33060, 127.0.0.1:33061]
  mysqlx://foobar?ssl-ca=(/path/to/ca.pem)&ssl-crl=(/path/to/crl.pem)
  mysqlx://foo:bar@[localhost:33060, 127.0.0.1:33061]?ssl-mode=disabled
  mysqlx://foo:bar@localhost:33160/?connect-timeout=0
  mysqlx://foo:bar@localhost:33160/?connect-timeout=10&compression=required
  mysqlx://foo:bar@localhost:33160/?connect-timeout=10&compression=required&compression-algorithms=[lz4,zstd_stream]`

  Pour plus d'informations, voir connexion à MySQL Shell » en utilisant une chaîne d'URI.

### Valeurs de retour

Un objet Session.

### Erreurs / Exceptions

Une erreur de connexion lance une exception Exception.

### Exemples

Exemple #2 Exemple de mysql_xdevapi\getSession()

`<?php
try {
$session = mysql_xdevapi\getSession("mysqlx://user:password@host");
} catch(Exception $e) {
die("Connection could not be established: " . $e->getMessage());
}
$schemas = $session->getSchemas();
print_r($schemas);
$mysql_version = $session->getServerVersion();
print_r($mysql_version);
var_dump($collection->find("name = 'Alfred'")->execute()->fetchOne());
?>`

Résultat de l'exemple ci-dessus est similaire à :

    Array
    (
        [0] => mysql_xdevapi\Schema Object
            (
                [name] => helloworld
            )
        [1] => mysql_xdevapi\Schema Object
            (
                [name] => information_schema
            )
        [2] => mysql_xdevapi\Schema Object
            (
                [name] => mysql
            )
        [3] => mysql_xdevapi\Schema Object
            (
                [name] => performance_schema
            )
        [4] => mysql_xdevapi\Schema Object
            (
                [name] => sys
            )
    )

    80012

    array(4) {
      ["_id"]=>
      string(28) "00005ad66abf0001000400000003"
      ["age"]=>
      int(42)
      ["job"]=>
      string(7) "Butler"
      ["name"]=>
      string(4) "Alfred"
    }