Rechercher une fonction PHP

mysqlnd_ms_query_is_select

(PECL mysqlnd_ms >= 1.0.0)

mysqlnd_ms_query_is_selectVérifie quel serveur est sélectionné pour l'envoi de la requête

Description

mysqlnd_ms_query_is_select ( string $query ) : int

Vérifie si l'on doit envoyer la requête au maître, à l'esclave ou bien au dernier serveur MySQL utilisé.

Les plugins internes de lectures/écritures seront utilisés pour analyser la requête afin de rendre une recommandation quant à la destination de la requête. Ce mécanisme est très simple. Le plugin recommandera d'envoyer toutes les requêtes au serveur MySQL maître de réplication sauf les requêtes qui commencent par SELECT, ou commencent avec une astuce SQL qui force l'envoie vers un serveur esclave. En raison de ce mécanisme simple mais rapide, le plugin peut proposer d'exécuter des requêtes en lecture seule comme SHOW TABLES sur le serveur de réplication.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

query

La requête à tester.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Une valeur de retour MYSQLND_MS_QUERY_USE_MASTER indique que la requête doit être envoyée au serveur MySQL maître de réplication. La fonction retournera une valeur de MYSQLND_MS_QUERY_USE_SLAVE si la requête peut être exécutée sur un esclave en raison du fait qu'elle ait été considérée comme exécutable en lecture seule. Une valeur de MYSQLND_MS_QUERY_USE_LAST_USED est retournée pour recommander d'exécuter la requête sur le dernier serveur utilisé. Ce peut être soit le serveur MySQL maître de réplication, soit un serveur MySQL esclave de réplication.

Si la séparation des lectures et des écritures a été désactivée avec l'option de configuration mysqlnd_ms.disable_rw_split, la fonction retournera toujours MYSQLND_MS_QUERY_USE_MASTER ou MYSQLND_MS_QUERY_USE_LAST_USED.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Exemple avec mysqlnd_ms_query_is_select()

<?php
function is_select($query)
{
 switch (
mysqlnd_ms_query_is_select($query))
 {
  case 
MYSQLND_MS_QUERY_USE_MASTER:
   
printf("'%s' devrait être exécutée sur le maître.\n"$query);
   break;
  case 
MYSQLND_MS_QUERY_USE_SLAVE:
   
printf("'%s' devrait être exécutée sur un esclabe.\n"$query);
   break;
  case 
MYSQLND_MS_QUERY_USE_LAST_USED:
   
printf("'%s' devrait être exécutée sur le serveur qui a exécuté la précédente requête.\n"$query);
   break;
  default:
   
printf("Aucune suggestion d'exécution de '%s', par défaut, le maître est recommandé.\n"$query);
   break;
 }
}

is_select("INSERT INTO test(id) VALUES (1)");
is_select("SELECT 1 FROM DUAL");
is_select("/*" MYSQLND_MS_LAST_USED_SWITCH "*/SELECT 2 FROM DUAL");
?>

L'exemple ci-dessus va afficher :

INSERT INTO test(id) VALUES (1) devrait être exécutée sur le maître.
SELECT 1 FROM DUAL should be run on a slave.
/*ms=last_used*/SELECT 2 FROM DUAL devrait être exécutée sur le serveur qui a exécuté la précédente requête.

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-function.mysqlnd-ms-query-is-select.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut