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)
MYSQLND_MS_SLAVE_SWITCH
(string)
MYSQLND_MS_LAST_USED_SWITCH
(string)
En rapport avec la fonction mysqlnd_ms_query_is_select()
MYSQLND_MS_QUERY_USE_MASTER
(integer)
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)
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)
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)
MYSQLND_MS_QOS_CONSISTENCY_SESSION
(integer)
MYSQLND_MS_QOS_CONSISTENCY_STRONG
(integer)
MYSQLND_MS_QOS_OPTION_GTID
(integer)
MYSQLND_MS_QOS_OPTION_AGE
(integer)
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 |