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
Exemple #1 Utilisation des constantes d'astuces SQL
La mise en cache de requêtes est contrôlée par les astuces SQL. Les astuces SQL sont utilisées pour activer et désactiver la mise en cache des requêtes. Elles peuvent être utilisées pour définir le TTL (la durée de vie dans le cache) d'une requête.
Les astuces SQL reconnues par la mise en cache de requêtes peuvent être manuellement modifiées au moment de la compilation. Ceci permet d'utiliser mysqlnd_qc dans les environnements pour lesquels les astuces SQL par défaut sont déjà utilisées et interprétées par d'autres systèmes. Toutefois, il est recommandé d'utiliser les constantes relatives aux astuces SQL au lieu d'ajouter manuellement les astuces SQL dans la chaîne de la requête.
<?php
/* Utilisation des constantes pour une portabilité maximale */
$query = "/*" . MYSQLND_QC_ENABLE_SWITCH . "*/SELECT id FROM test";
/* Valide mais moins portable : TTL par défaut */
$query = "/*qc=on*/SELECT id FROM test";
/* Valide mais moins portable : TTL par requête */
$query = "/*qc=on*//*qc_ttl=5*/SELECT id FROM test";
printf("MYSQLND_QC_ENABLE_SWITCH: %s\n", MYSQLND_QC_ENABLE_SWITCH);
printf("MYSQLND_QC_DISABLE_SWITCH: %s\n", MYSQLND_QC_DISABLE_SWITCH);
printf("MYSQLND_QC_TTL_SWITCH: %s\n", MYSQLND_QC_TTL_SWITCH);
?>
Les exemples ci-dessus vont afficher :
MYSQLND_QC_ENABLE_SWITCH: qc=on MYSQLND_QC_DISABLE_SWITCH: qc=off MYSQLND_QC_TTL_SWITCH: qc_ttl=
-
MYSQLND_QC_ENABLE_SWITCH
(chaîne de caractères) - Astuce SQL utilisée pour activer la mise en cache d'une requête.
-
MYSQLND_QC_DISABLE_SWITCH
(chaîne de caractères) - Astuce SQL utilisée pour désactiver la mise en cache d'une requête si mysqlnd_qc.cache_by_default = 1.
-
MYSQLND_QC_TTL_SWITCH
(chaîne de caractères) - Astuce SQL utilisée pour définir le TTL (la durée de vie dans le cache) d'un jeu de résultats.
-
MYSQLND_QC_SERVER_ID_SWITCH
(chaîne de caractères) - Cette astuce SQL ne doit en généralement pas être utilisée. Elle est nécessaire à PECL/mysqlnd_ms pour grouper les entrées du cache pour une seule requête et provient de différentes connexions physiques. Si l'astuce est utilisée, la configuration de la connexion comme l'utilisateur, le nom d'hôte et le jeu de caractères ne sera pas prise en considération pour générer la clé du cache de la requête. A la place de cela, la valeur fournie et la chaîne de requête seront utilisées comme entrée dans la fonction de hachage qui génère la clé. PECL/mysqlnd_ms peut, si demandé, mettre en cache les résultats depuis des serveurs esclaves de réplication MySQL. En raison du fait que le cache peut contenir plusieurs connexions à l'esclave, la clé du cache ne doit pas être formée en utilisant le nom de l'utilisateur, le nom d'hôte ou tout autre configuration qui peuvent varier entre les connexions aux esclaves. Au lieu de ça, PECL/mysqlnd_ms fournit un identifiant qui se réfère au groupe de connexions esclaves qui doivent être activées pour partager les entrées du cache, peu importe la connexion esclave physique utilisée pour générer l'entrée du cache. L'utilisation de cette fonctionnalité en dehors de PECL/mysqlnd_ms n'est pas recommandée.
En relation avec mysqlnd_qc_set_cache_condition()
Exemple #2 Exemple avec mysqlnd_qc_set_cache_condition()
La fonction mysqlnd_qc_set_cache_condition() autorise la définition de condition pour la mise en cache automatique des requêtes qui ne commencent pas par des astuces SQL, nécessaire pour l'activation manuelle de la mise en cache.
<?php
/* Met en cache tous les accès aux tables avec le "new%" dans le schéma/base de données "db_example" pour 1 seconde */
if (!mysqlnd_qc_set_cache_condition(MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN, "db_example.new%", 1)) {
die("Échec de la définition de la condition de mise en cache !");
}
$mysqli = new mysqli("host", "user", "password", "db_example", "port");
/* Mise en cache alors qu'aucune astuce SQL n'est fournie */
$mysqli->query("SELECT id, title FROM news");
$pdo_mysql = new PDO("mysql:host=host;dbname=db_example;port=port", "user", "password");
/* Non mise en cache : aucune astuce SQL, et le masque ne correspond pas */
$pdo_mysql->query("SELECT id, title FROM latest_news");
/* Mise en cache : TTL de 1 seconde, le masque correspond */
$pdo_mysql->query("SELECT id, title FROM news");
?>
-
MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN
(entier) - Utilisé comme paramètre de la fonction mysqlnd_qc_set_cache_condition() pour définir les conditions pour le schéma de mise en cache automatique.
Autres
Le numéro de version du plugin peut être obtenu en utilisant soit la
constante MYSQLND_QC_VERSION
, qui est une représentation
sous forme de chaînes de caractères du numéro de version numérique, ou la
constante MYSQLND_QC_VERSION_ID
, qui est un entier
comme par exemple, 10000. Les développeurs peuvent calculer le numéro de
bersion comme ceci :
Version (partie) | Exemple |
---|---|
Majeur*10000 | 1*10000 = 10000 |
Mineur*100 | 0*100 = 0 |
Patch | 0 = 0 |
MYSQLND_QC_VERSION_ID | 10000 |
-
MYSQLND_QC_VERSION
(chaîne de caractères) -
Chaîne de caractères représentant la version du plugin,
par exemple,
1.0.0-prototype
.
-
MYSQLND_QC_VERSION_ID
(entier) - Numéro de version du plugin, par exemple, 10000.
Version en cache
24/12/2024 14:34:27 Cette version de la page est en cache (à la date du 24/12/2024 14:34:27) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-mysqlnd-qc.constants.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
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.