mysqlnd_ms
PHP Manual

Constantes pré-définies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Astuces SQL concernées

Exemple #1 Exemple montrant l'utilisation des constantes mysqlnd_ms

Le plugin de réplication et de balance de charge (mysqlnd_ms) effectue une séparation des lectures et des écritures pour diriger les requêtes d'écriture vers un serveur MySQL maître, et les requêtes de lecture vers un serveur MySQL esclave. Le plugin a une logique interne de séparation lecture/écriture. Elle est relativement basique. Toutes les requêtes qui commencent par SELECT sont considérées comme des requêtes en lecture qui sont envoyées vers un serveur MySQL esclave listé dans le fichier de configuration du plugin. Toutes les autres requêtes sont redirigées vers le serveur MySQL maître spécifié dans le fichier de configuration du plugin.

Les astuces SQL fournies par l'utilisateur peuvent être utilisées pour écraser ce comportement, afin d'en maîtriser totalement le processus. Les astuces SQL sont des commentaires standards SQL. Le plugin analysera le début de la chaîne de requête pour y trouver un commentaire SQL avec des commandes spécifiques, qui contrôlera la redirection de la requête. Les autres systèmes intervenant dans le processus de la requête ne sont pas affectés par les astuces SQL, tout simplement parcequ'ils les ignoreront.

Le plugin supporte 3 astuces SQL pour diriger les requêtes vers un des serveurs MySQL esclaves, le serveur MySQL maître, ou vers le dernier serveur MySQL utilisé. Les astuces SQL doivent être placées en début de requête pour être reconnues par le plugin.

Pour des raisons de portabilité, il est recommandé d'utiliser les constantes MYSQLND_MS_MASTER_SWITCH, MYSQLND_MS_SLAVE_SWITCH et MYSQLND_MS_LAST_USED_SWITCH au lieu de leurs valeurs littérales.

<?php
/* utilisation des constantes pour une portabilité maximale */
$master_query "/*" MYSQLND_MS_MASTER_SWITCH "*/SELECT id FROM test";

/* Valide, mais moins portable : utilisation littérale au lieu des constantes */
$slave_query "/*ms=slave*/SHOW TABLES";

printf("master_query = '%s'\n"$master_query);
printf("slave_query = '%s'\n"$slave_query);
?>

Les exemples ci-dessus vont afficher :

master_query = /*ms=master*/SELECT id FROM test
slave_query = /*ms=slave*/SHOW TABLES

MYSQLND_MS_MASTER_SWITCH (string)
Astuce SQL utilisée pour envoyer une requête au serveur MySQL maître de réplication.
MYSQLND_MS_SLAVE_SWITCH (string)
Astuce SQL utilisé pour envoyer une requête à un des serveurs MySQL esclaves de réplication.
MYSQLND_MS_LAST_USED_SWITCH (string)
Astuce SQL utilisé pour envoyer une requête au dernier serveur MySQL utilisé. Ce peut être soit un maître, soit un esclave.

En rapport avec la fonction mysqlnd_ms_query_is_select()

MYSQLND_MS_QUERY_USE_MASTER (integer)
Si la fonction mysqlnd_ms_is_select() retourne MYSQLND_MS_QUERY_USE_MASTER pour une requête donnée, le mécanisme interne de séparation des lectures/écritures recommande d'envoyer la requête vers un serveur MySQL maître de réplication.
MYSQLND_MS_QUERY_USE_SLAVE (integer)
Si la fonction mysqlnd_ms_is_select() retourne MYSQLND_MS_QUERY_USE_SLAVE pour une requête donnée, le mécanisme interne de séparation des lectures/écritures recommande d'envoyer la requête vers un serveur MySQL esclave de réplication.
MYSQLND_MS_QUERY_USE_LAST_USED (integer)
Si la fonction mysqlnd_ms_is_select() retourne MYSQLND_MS_QUERY_USE_LAST_USED pour une requête donnée, le mécanisme de séparation des lectures/écritures recommande d'envoyer la requête vers le dernier serveur utilisé.

mysqlnd_ms_set_qos(), en rapport avec la qualité du service des filtres et des niveaux de services

MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL (integer)
Utilisé pour demander une éventuelle consistence du niveau de service depuis la fonction mysqlnd_ms_set_qos(). Une consistence éventuelle est la qualité par défaut du service lors d'une lecture depuis un esclave de réplication asynchrone MySQL. Les données retournées dans ce niveau de service peuvent ou pas être non à jour, suivant si l'esclave sélectionné a déjà répliqué les dernières modifications survenues sur le serveur maître de réplication MySQL.
MYSQLND_MS_QOS_CONSISTENCY_SESSION (integer)
Utilisé pour demander une consistence de session du niveau de service depuis la fonction mysqlnd_ms_set_qos(). Une consistence de session est défini pour lire vos écritures. Le client est garanti de voir ces propres dernières modifications.
MYSQLND_MS_QOS_CONSISTENCY_STRONG (integer)
Utilisé pour demander une consistence forte du niveau de service depuis la fonction mysqlnd_ms_set_qos(). Une consistence forte est utilisée pour assurer à tous les clients de voir chaque modification effectuée par les autres.
MYSQLND_MS_QOS_OPTION_GTID (integer)
Utilisé comme une option du niveau de service avec la fonction mysqlnd_ms_set_qos() pour paramétrer la consistence de session.
MYSQLND_MS_QOS_OPTION_AGE (integer)
Utilisé comme une option du niveau de service avec la fonction mysqlnd_ms_set_qos() pour paramétrer une consistence éventuelle.

Autre

Le numéro de version du plugin peut être obtenu en utilisant la constante MYSQLND_MS_VERSION ou la constante MYSQLND_MS_VERSION_ID. La constante MYSQLND_MS_VERSION est une représentation sous forme de chaîne de caractères du numéro de version numérique de la constante MYSQLND_MS_VERSION_ID, qui est un entier, comme 10000. Les développeurs peuvent calculer le numéro de version comme ceci :

Version (partie) Exemple
Majeur*10000 1*10000 = 10000
Mineur*100 0*100 = 0
Patch 0 = 0
MYSQLND_MS_VERSION_ID 10000

MYSQLND_MS_VERSION (string)
La chaîne représentant la version du plugin, par exemple, "1.0.0-prototype".
MYSQLND_MS_VERSION_ID (integer)
Le numéro de version du plugin, par exemple, 10000.


mysqlnd_ms
PHP Manual