(No version information available, might only be in Git)
getSession — Connecte à un serveur MySQL
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.
Un objet Session.
Une erreur de connexion lance une exception Exception.
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" }