Position actuelle: Accueil> Derniers articles> Comment utiliser MySQLI :: Débogage pour analyser les problèmes de délai d'expiration de la base de données

Comment utiliser MySQLI :: Débogage pour analyser les problèmes de délai d'expiration de la base de données

M66 2025-05-17

Dans le développement quotidien de PHP, les problèmes de performance de la base de données sont souvent les plus gênants, en particulier ces problèmes de délai de délai intermittent, ce qui rend souvent difficile pour les développeurs de se localiser rapidement. Heureusement, l'extension MySQLI de PHP fournit un outil puissant - MySQLI :: Debug , qui peut nous aider à enregistrer des journaux de fonctionnement de la base de données détaillés, analysant ainsi profondément les problèmes de requête ou de connexion lents et de trouver rapidement des goulots d'étranglement de performances.

1. Qu'est-ce que Mysqli :: débogage ?

MySQLI :: Debug est une méthode de la classe MySQLI qui permet la journalisation de débogage. Cette méthode enregistre les opérations client MySQL dans un fichier journal, aidant à résoudre les exceptions ou les problèmes de performances lors de la connexion, exécution SQL.

 mysqli::debug(string $debug_options): bool

Cette méthode est généralement appelée avant une connexion de base de données et nécessite que le pilote MySQLND soit activé au moment de la compilation PHP et que le débogage est configuré.

2. Prérequis pour permettre le débogage

Pour utiliser MySqli :: Debug , vous devez vous assurer:

  1. PHP utilise le pilote MySqlnd <br> Vous pouvez confirmer en regardant phpinfo () :

     phpinfo();
    

    Recherchez MySqlnd , si vous voyez les mots suivants, cela signifie que vous avez activé:

     Client API library version => mysqlnd 8.x.x
    
  2. Modifier la configuration php.ini pour permettre le débogage

     mysqlnd.debug = "/tmp/mysqlnd.log"
    

    Après modification, redémarrez le service PHP-FPM ou Apache.

3. Comment utiliser MySqli :: Debug ?

Dans votre script PHP, appelez MySqli :: Debug () , puis créez la connexion de la base de données et exécutez la requête normalement. Par exemple:

 <?php

// Activer la journalisation de débogage
mysqli::debug("d:t:o,/tmp/mysqlnd.log");

// Connexion de base de données
$mysqli = new mysqli("localhost", "db_user", "db_pass", "db_name");

if ($mysqli->connect_errno) {
    echo "Échec de la connexion: " . $mysqli->connect_error;
    exit();
}

// Exécuter une requête
$result = $mysqli->query("SELECT * FROM users WHERE status = 'active'");

while ($row = $result->fetch_assoc()) {
    echo $row['username'] . "<br>";
}

$mysqli->close();
?>

dans:

  • débogage dénommé

  • horodatage

  • o, / tmp / mysqlnd.log spécifie le fichier de sortie

4. Analyser le journal de débogage

Le journal de débogage sera sorti à l'emplacement que vous avez spécifié (tel que /tmp/mysqlnd.log ), et vous pouvez afficher le contenu à l'aide de moins , de la queue ou de tout éditeur de texte.

 tail -f /tmp/mysqlnd.log

Les points d'analyse courants comprennent:

  • La connexion prend du temps?

  • Si la déclaration de requête est exécutée à plusieurs reprises

  • Requête en cas de coup de cache

  • La requête lente prend du temps

Avec l'analyse Expliquez des instructions SQL, vous pouvez déterminer plus précisément si vous devez optimiser l'index ou éviter la numérisation complète du tableau.

5. Positionnement supplémentaire en combinaison avec des journaux de requête lents

Bien que MySQLI :: Debug fournit des informations sur les clients riches, une analyse de requête lente plus profonde nécessite également le propre journal de requête lent de MySQL:

 SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

Les journaux de requête lents combinés avec les journaux clients de MySQLI :: Debug peuvent être analysés en collaboration depuis les deux extrémités pour localiser rapidement les goulots d'étranglement.

6. Fermer le débogage après le débogage terminé

Pour des raisons de performance et de sécurité, le débogage doit être utilisé dans les environnements de développement ou de test. N'oubliez pas de le fermer après le débogage:

 mysqli::debug(""); // Effacer les paramètres de débogage égaux à l&#39;arrêt

7. Résumé

Grâce à MySQLI :: Debug , nous pouvons enregistrer et analyser avec précision le processus d'interaction entre les scripts PHP et MySQL, qui est d'une grande valeur pour gérer les problèmes de connexion de la base de données, les délais d'expiration intermittents et l'analyse de la requête lente. Faire bon usage de cet outil pendant la phase de développement peut réduire considérablement la probabilité de "marcher sur la mine" après son lancement.