(PECL mysqlnd_ms >= 1.2.0)
mysqlnd_ms_get_last_gtid — Retourne le dernier identifiant de transaction globale
Retourne un identifiant de transaction globale qui appartient à une opération en écriture plus récente que la dernière opération en écriture effectuée par le client. Il n'est pas garanti que l'identifiant de transaction globale est identique à celui créée pour la dernière transaction en écriture effectuée par le client.
connection
Un gestionnaire de connexion PECL/mysqlnd_ms vers un serveur MySQL de type PDO_MYSQL, mysqli ou ext/mysql. Le gestionnaire de connexion est obtenu lors de l'ouverture d'une connexion avec le nom d'hôte qui correspond à l'entrée du fichier de configuration mysqlnd_ms utilisant n'importe laquelle des extensions MySQL listées ci-dessus.
Retourne un identifiant de transaction globale (GTID) en cas de succès, false
sinon.
La fonction mysqlnd_ms_get_last_gtid() retourne le GTID obtenu
en exécutant la requête SQL depuis l'entrée fetch_last_gtid
de la section global_transaction_id_injection
depuis le fichier
de configuration du plugin.
La fonction peut être appelée après que GTID ait été incrémenté.
Note:
mysqlnd_ms_get_last_gtid() requière PHP >= 5.4.0 et PECL mysqlnd_ms >= 1.2.0. En interne, elle utilise une fonctionnalité de la bibliothèque C de
mysqlnd
qui n'est pas disponible avec PHP 5.3.Veuillez noter que toutes les versions en production de MySQL 5.6 ne fournissent pas aux clients les informations suffisantes pour l'utilisation des GTIDs permettant de renforcer la consistence des sessions. Dans un tel cas, le plugin choisira uniquement le maître.
Exemple #1 Exemple avec mysqlnd_ms_get_last_gtid()
<?php
/* On ouvre une connexion mysqlnd_ms en utilisant l'extension mysqli, PDO_MySQL ou mysql */
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
/* Bien évidemment, votre gestionnaire d'erreurs est meilleur... */
die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));
/* mode auto_commit, transaction sur le maître, le GTID doit être incrémenté */
if (!$mysqli->query("DROP TABLE IF EXISTS test"))
die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
printf("GTID après la transaction %s\n", mysqlnd_ms_get_last_gtid($mysqli));
/* mode auto_commit, transaction sur le maître, le GTID doit être incrémenté */
if (!$mysqli->query("CREATE TABLE test(id INT)"))
die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
printf("GTID après la transaction %s\n", mysqlnd_ms_get_last_gtid($mysqli));
?>