(PECL mysqlnd_qc >= 1.1.0)
mysqlnd_qc_set_cache_condition — Définit les conditions pour une mise en cache automatique
$condition_type
,
mixed
$condition
,
mixed
$condition_option
) : boolDéfinit une condition pour une mise en cache automatique de requêtes qui ne contiennent pas nécessairement d'astuces SQL pour l'activation de la mise en cache.
condition_type
Type de condition. La seule valeur autorisée est
MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN
.
condition
Paramètre pour la condition définie avec condition_type
.
Le type et la structure du paramètre
dépendent de condition_type
Si condition_type
vaut
MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN
,
condition
doit être une chaîne. La chaîne
définit un masque. Les requêtes sont mises en cache si
l'entrée des méta-données table et base de données de leurs jeux
de résultats correspond au masque. Le masque est vérifiée pour
une correspondance avec les entrées méta-données db
et org_table
fournis par la bibliothèque MySQL client
serveur sous-jacente. Reportez-vous au manuel de référence MySQL pour
plus de détails sur ces deux entrées. Les valeurs
db
et org_table
sont concaténées
avec un point (.
) avant de tenter une équivalence
avec la condition
. La recherche de correspondance
supporte les jokers %
et _
.
Le joker %
va faire correspondre un ou plusieurs
caractères arbitraires. Le joker _
va faire
correspondre une seule caractère arbitraire. Le caractère d'échappement
est l'anti-slashes (\).
condition_option
Option pour la condition
Le type et la structure
dépendent de condition_type
.
Si condition_type
vaut
MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN
,
condition_options
sera le TTL à utiliser.
Exemple #1 Exemple avec mysqlnd_qc_set_cache_condition()
<?php
/* Met en cache tous les accès aux tables dont le nom est "new%" dans le schéma/base de données "db_example"
pendant une seconde */
if (!mysqlnd_qc_set_cache_condition(MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN, "db_example.new%", 1)) {
die("Echec lors de la définition d'une condition de mise en cache !");
}
$mysqli = new mysqli("host", "user", "password", "db_example", "port");
/* Mise en cache, malgré l'absence d'astuce SQL */
$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, aucun masque ne correspond */
$pdo_mysql->query("SELECT id, title FROM latest_news");
/* Mise en cache : TTL d'une seconde, masque trouvé */
$pdo_mysql->query("SELECT id, title FROM news");
?>
Retourne true
en cas de succès, false
sinon.