Le débogage est un lien indispensable dans le processus de développement d'applications PHP et d'interaction avec les bases de données MySQL. Les outils et les journaux de débogage sont particulièrement importants, en particulier lors de la recherche de problèmes de connexion, de l'interrogation des problèmes de performances ou des erreurs inattendues. Deux méthodes de débogage couramment mentionnées utilisent la fonction MySQLI :: Debug () et les journaux de débogage locaux qui permettent MySQL (comme General_Log et Slow_Query_Log ). Bien qu'ils puissent aider les développeurs à comprendre le fonctionnement de la base de données, ils varient dans leur objectif, leur mécanisme et leur degré de détail.
MySqli :: Debug () est une méthode statique fournie par l'extension PHP MySQLI . Il vous permet d'activer les fonctions de débogage au niveau du client pour suivre le processus détaillé de communication entre les scripts PHP et les bases de données MySQL. Ces informations de débogage sont générées par le client (c'est-à-dire le moteur PHP), pas le serveur de base de données.
<?php
// Allumez la journalisation de débogage dans les fichiers temporaires
mysqli::debug("d:t:O,/tmp/client_trace.log");
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
$result = $mysqli->query("SELECT * FROM users WHERE email LIKE '%@m66.net%'");
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$mysqli->close();
?>
Enregistrez la pile d'appels clients : vous pouvez afficher le comportement des clients PHP avant et après chaque appel à la base de données.
Aucune configuration de serveur requise : les exigences d'autorisation du serveur sont faibles et conviennent aux environnements restreints tels que l'hébergement partagé.
Convient aux problèmes de connexion de débogage : tels que la connexion infructueuse, l'échec de l'authentification, etc.
Seul le comportement du client PHP est enregistré, à l'exclusion des détails d'exécution dans MySQL.
Seules les opérations effectuées via MySQLI peuvent être suivies, d'autres telles que PDO ou MySqlnd ne sont pas valides.
Le serveur MySQL lui-même fournit également un mécanisme de journalisation pour enregistrer le fonctionnement de la base de données. Parmi eux, General_Log et Slow_Query_Log sont les deux les plus couramment utilisés:
General_Log : enregistre toutes les instructions SQL exécutées.
Slow_Query_Log : enregistre les requêtes lentes dont le temps d'exécution dépasse le seuil spécifié.
-- Ouvrir general_log
SET global general_log = 1;
SET global general_log_file = '/var/log/mysql/general.log';
-- Ouvrir慢查询日志
SET global slow_query_log = 1;
SET global slow_query_log_file = '/var/log/mysql/slow.log';
SET global long_query_time = 2; -- L'exécution d'enregistrement dépasse 2 Deuxième déclaration
Enregistrer l'historique détaillé de l'exécution de SQL : adapté à l'analyse du comportement de requête et à l'identification des requêtes non valides.
Aide à optimiser les performances de la base de données : les goulots d'étranglement peuvent être identifiés par des journaux de requête lents.
Peut être intégré aux outils d'analyse des performances : tels que Pt-Query-Digest, MySQL Workbench.
Des autorisations d'administrateur de la base de données sont nécessaires.
Peut affecter les performances, en particulier lorsque General_Log est activé.
Fonctionnalités / outils | mysqli :: debug () | Journal de débogage local mysql |
---|---|---|
Emplacement | Client PHP | Côté serveur mysql |
Contenu enregistrable | Appels de fonction client, détails de connexion | Tous les enregistrements d'exécution de l'instruction SQL, requête lente |
Activer les exigences d'autorisation | Faible | Élevé (autorisation du serveur requise) |
Impact de la performance | Extrêmement bas | Moyen à élevé (selon le type de journal) |
Scénarios d'utilisation recommandés | Environnement de débogage et de développement côté PHP | Analyse des performances de la base de données, suivi des journaux de l'environnement de production |
MySQLI :: Debug () convient plus à la phase de débogage du développement des applications PHP et est particulièrement utile lors du dépannage des problèmes de connexion de la base de données ou de la compréhension du comportement du client. Les journaux de débogage locaux de MySQL accordent plus d'attention aux détails de l'exécution SQL côté serveur, qui sont particulièrement importants pour optimiser les performances de la base de données et trouver la cause première des problèmes.
L'approche idéale consiste à utiliser les deux en combinaison: utilisez MySQLI :: Debug () pour capturer le processus d'appel pendant le développement local et effectuer une analyse approfondie sur le système de journal qui permet MySQL dans un environnement de test ou de production. Cela peut former une chaîne de débogage complète du client vers le serveur, améliorant considérablement l'efficacité du positionnement des problèmes.