Position actuelle: Accueil> Derniers articles> MySQLI :: Rafraîchissement combiné avec la constante de mysqli_refresh_tables

MySQLI :: Rafraîchissement combiné avec la constante de mysqli_refresh_tables

gitbox 2025-05-29

1. Qu'est-ce que MySQLI :: Rafraîchissement?

MySQLI :: Refresh est une méthode de la classe MySQLI , et sa définition est la suivante:

 public mysqli::refresh (int $options): bool

Il reçoit un paramètre entier $ Options , une combinaison d'une ou plusieurs constantes utilisées pour contrôler le comportement de rafraîchissement. Par exemple:

  • Mysqli_refresh_grant

  • Mysqli_refresh_log

  • Mysqli_refresh_tables

  • Mysqli_refresh_hosts

  • Mysqli_refresh_status

  • Mysqli_refresh_threads

Ces constantes peuvent être utilisées en combinaison par bit ou ( | ), par exemple:

 MYSQLI_REFRESH_TABLES | MYSQLI_REFRESH_STATUS

2. Qu'est-ce que mysqli_refresh_tables?

MySQLI_REFRESH_TABLES est une constante utilisée pour indiquer la rafraîchissement du cache de table de données. Lorsque vous apportez des modifications à la structure de la table pendant le code en cours d'exécution (comme l'ajout de champs, la modification des index, etc.) et espérez que la connexion actuelle peut reconnaître ces modifications immédiatement, vous pouvez appeler MySQLI :: Refresh (MySQLI_REFRESH_TABLES) .

Ceci est très utile pour les programmes qui fonctionnent pendant longtemps ou maintiennent périodiquement des structures de table via des scripts.


3. Comment utiliser MySQLI :: Refresh et MySQLI_REFRESH_TABLES ensemble

Voici un exemple complet montrant comment utiliser la méthode MySQLI :: Refresh avec la constante MySQLI_REFRESH_TABLES :

 <?php

$mysqli = new mysqli("localhost", "username", "password", "database");

// Vérifiez la connexion
if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

// Actualiser le cache de la table de données
if ($mysqli->refresh(MYSQLI_REFRESH_TABLES)) {
    echo "Tableau de données actualiser avec succès。\n";
} else {
    echo "La rafraîchissement du tableau de données a échoué。\n";
}

$mysqli->close();

Dans cet exemple, nous nous connectons au serveur de base de données local, puis appelons la méthode de rafraîchissement et passons dans mysqli_refresh_tables , et sortis l'invite après le succès.

Vous pouvez également combiner plusieurs options de rafraîchissement:

 $mysqli->refresh(MYSQLI_REFRESH_TABLES | MYSQLI_REFRESH_STATUS);

4. Exemples de scénarios d'utilisation

1. Dans le script de déploiement automatisé

Dans certains processus de déploiement automatisés, les scripts peuvent exécuter des requêtes immédiatement après la mise à jour de la structure de la base de données. Afin d'éviter les erreurs causées par des métadonnées mises en cache, appeler la méthode de rafraîchissement peut garantir que la dernière structure est utilisée.

2. Système de structures de données dynamiques

Par exemple, certaines plates-formes SaaS permettent aux utilisateurs d'ajouter dynamiquement des champs ou d'étendre les structures de table. Dans ce système , MySQLI :: Refresh (mysqli_refresh_tables) peut être utilisé pour s'assurer que le code de couche d'application reconnaît les changements structurels en temps opportun.

3. Rafraîchissement de l'autorisation MySQL

Bien que nous discutons principalement de mysqli_refresh_tables dans cet article, d'ailleurs, si vous utilisez un script pour modifier les autorisations (telles que les utilisateurs autorisés), vous pouvez utiliser MySQLI_REFRESH_GRANT pour actualiser la table d'autorisation:

 $mysqli->refresh(MYSQLI_REFRESH_GRANT);

5. Choses à noter

  • La méthode d'actualisation ne modifie pas les données ou la structure réelles dans la base de données, elle oblige simplement le client MySQLI à recharger le cache interne.

  • Toutes les configurations de serveur MySQL ne prennent pas en charge tous les types d'opérations de rafraîchissement, selon la version et les paramètres du serveur.

  • Si vous passez dans une combinaison constante non valide lorsque vous appelez la méthode de rafraîchissement , elle peut ne pas signaler une erreur, mais elle ne jouera aucun rôle.