(No version information available, might only be in Git)
getSession — Baut eine Verbindung zu einem MySQL-Server auf
Baut eine Verbindung zum MySQL-Server auf.
uri
Der URI des MySQL-Servers, z. B.
mysqlx://user:password@host
.
URI-Format:
scheme://[user[:[password]]@]target[:port][?attribute1=value1&attribute2=value2...
scheme
: erforderlich; das Verbindungsprotokoll
In mysql_xdevapi ist es immer 'mysqlx' (für das X-Protokoll)
user
: optional; das MySQL-Benutzerkonto für die
Authentifizierung
password
: optional; das Passwort des
MySQL-Benutzers für die Authentifizierung
target
: erforderlich; die Serverinstanz, auf die
sich die Verbindung bezieht:
* TCP-Verbindung (Hostname, IPv4-Adresse oder IPv6-Adresse)
* Pfad des Unix-Sockets (lokaler Dateipfad)
* Windows Named-Pipe (lokaler Dateipfad)
port
: optional; der Netzwerk-Port des MySQL-Servers
der Standard-Port für das X-Protokoll ist 33060
?attribute=value
: Dieses Element ist optional und
gibt ein Datenwörterbuch an, das verschiedene Optionen enthält, unter
anderem:
Das Attribut auth
(Authentifizierungsmechanismus),
das für verschlüsselte Verbindungen benötigt wird. Für weitere
Informationen siehe
» Command Options for Encrypted Connections.
Die folgenden 'auth'-Werte werden unterstützt:
plain
, mysql41
,
external
und sha256_mem
.
Das Attribut connect-timeout
betrifft die
Verbindung selbst, aber nicht die nachfolgenden Operationen. Es wird
pro Verbindung gesetzt, unabhängig davon, ob die Verbindung zu einem
oder mehreren Hosts besteht.
Das Zeitlimit für die Verbindung wird mit einer positiven Ganzzahl in Sekunden angegeben. Wenn 0 (Null) angegeben wird, ist das Zeitlimit deaktiviert (unendlich). Wird kein Zeitlimit angegeben, wird der Standardwert 10 verwendet.
In diesem Zusammenhang können die Umgebungsvariablen MYSQLX_CONNECTION_TIMEOUT (Zeitlimit in Sekunden) und MYSQLX_TEST_CONNECTION_TIMEOUT (wird bei Tests verwendet) gesetzt und im URI anstelle von connect-timeout verwendet werden. Die URI-Option connect-timeout hat gegenüber diesen Umgebungsvariablen Vorrang.
Das optionale Attribut compression
akzeptiert
diese Werte: preferred
(der Client verhandelt mit
dem Server, um einen unterstützten Algorithmus zu finden; wenn kein
von beiden Seiten unterstützter Algorithmus gefunden wird, bleibt
die Verbindung unkomprimiert), required
(wie
"preferred", aber die Verbindung wird abgebrochen, wenn kein von
beiden Seiten unterstützter Algorithmus gefunden wird) oder
disabled
(die Verbindung bleibt unkomprimiert).
Der Standardwert ist preferred
.
Diese Option wurde in Version 8.0.20 hinzugefügt.
Das optionale Attribut compression-algorithms
definiert die gewünschten Kompressionsalgorithmen (und die
bevorzugte Reihenfolge ihrer Verwendung):
zstd_stream
(alias: zstd),
lz4_message
(alias: lz4) oder
deflate_stream
(alias: deflate oder zlib).
Standardmäßig wird (je nach Verfügbarkeit des Systems) die
Reihenfolge lz4_message, zstd_stream und dann deflate_stream
verwendet. Wenn zum Beispiel compression-algorithms=[lz4,zstd_stream]
übergeben wird, wird lz4 verwendet, wenn es verfügbar ist,
andernfalls wird zstd_stream verwendet. Wenn beide nicht verfügbar
sind, hängt das Verhalten vom compression-Wert ab, so wird z. B. bei
compression=required eine Fehlermeldung ausgegeben.
Diese Option wurde in Version 8.0.22 hinzugefügt.
Beispiel #1 Beispiele für URIs
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]
Für weitere Informationen siehe den Abschnitt » Connecting using a URI String zur MySQL Shell.
Gibt ein Session-Objekt zurück.
Ein Verbindungsfehler löst eine Exception aus.
Beispiel #2 mysql_xdevapi\getSession()-Beispiel
<?php
try {
$session = mysql_xdevapi\getSession("mysqlx://user:password@host");
} catch(Exception $e) {
die("Die Verbindung konnte nicht aufgebaut werden: " . $e->getMessage());
}
$schemas = $session->getSchemas();
print_r($schemas);
$mysql_version = $session->getServerVersion();
print_r($mysql_version);
var_dump($collection->find("name = 'Alfred'")->execute()->fetchOne());
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
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" }