Lors du développement et du débogage des programmes PHP, l'optimisation des opérations de base de données et l'emplacement du problème sont très importantes. MySQLI :: Debug fournit un moyen puissant de débogage des requêtes de base de données, mais comment classer et gérer efficacement ces sorties de débogage pour l'analyse par module, utilisateur ou demande est souvent une partie que les développeurs ignorent. Cet article présentera comment gérer MySQLI :: Debug Sortie par module, utilisateur ou demande de classification pour mieux déboguer et optimiser les opérations de base de données.
MySQLI :: Debug est une fonction de débogage fournie par l'extension MySQLI en PHP. Il peut produire des informations de débogage du serveur MySQL, telles que le processus d'exécution de requête, le temps, les informations d'erreur, etc. Afin de mieux déboguer les opérations de base de données, cette fonction doit être activée en premier.
mysqli_report(MYSQLI_REPORT_ALL); // Allumez tous les avertissements et rapports d'erreur
Vous pouvez ensuite utiliser la méthode MySQLI :: Debug dans votre objet MySQLI pour produire des informations de débogage:
$mysqli = new mysqli("localhost", "user", "password", "database");
$mysqli->debug("SELECT * FROM users"); // Imprimer SQL Informations de débogage
De cette façon, vous pouvez afficher des informations de débogage détaillées lors de l'exécution des opérations de base de données.
Dans les grandes applications, les opérations de base de données impliquent souvent plusieurs modules. Pour mieux déboguer et optimiser les opérations de base de données dans ces modules, il est recommandé d'utiliser différentes sorties de débogage dans différents modules et de les connecter à différents fichiers journaux. Vous pouvez définir un identifiant unique pour chaque module et ajouter cet identifiant à la sortie.
function debug_query($mysqli, $query, $module_name) {
$mysqli->debug("Module: $module_name, Query: $query");
}
Lorsque vous appelez la fonction dans un module différent, il diffuse des informations de débogage liées au module, vous aidant à distinguer les opérations de base de données de différents modules.
debug_query($mysqli, "SELECT * FROM users", "UserModule");
debug_query($mysqli, "SELECT * FROM orders", "OrderModule");
De cette façon, vous pouvez facilement analyser les opérations de base de données pour différents modules avec des identifiants.
Dans certaines applications, vous devrez peut-être afficher les informations de débogage pour les opérations de base de données en fonction de différents utilisateurs. Ceci est particulièrement important pour les systèmes multi-utilisateurs, où vous pouvez produire dynamiquement des informations de débogage en fonction de l'identité de l'utilisateur actuel. Par exemple, vous pouvez ajouter l'ID de l'utilisateur actuel aux informations de débogage.
function debug_query_by_user($mysqli, $query, $user_id) {
$mysqli->debug("User ID: $user_id, Query: $query");
}
Chaque fois qu'un utilisateur effectue une opération de base de données, vous pouvez enregistrer l'ID de l'utilisateur actuel afin qu'il affiche explicitement dans la sortie de débogage à laquelle l'utilisateur appartient à:
debug_query_by_user($mysqli, "SELECT * FROM users", $current_user_id);
debug_query_by_user($mysqli, "SELECT * FROM orders", $current_user_id);
Cette méthode peut vous aider à suivre rapidement quel utilisateur a effectué les opérations de base de données.
Dans des applications complexes, une demande peut impliquer plusieurs opérations de base de données et chaque demande peut être lancée par un autre utilisateur. Pour mieux gérer les informations de débogage, vous pouvez générer un ID de demande unique pour chaque demande et ajouter cet ID à la sortie de débogage. Cela vous aide à identifier et à analyser rapidement les opérations de base de données pour chaque demande.
function debug_query_by_request($mysqli, $query, $request_id) {
$mysqli->debug("Request ID: $request_id, Query: $query");
}
Vous pouvez générer un ID de demande unique à l'entrée de chaque demande et enregistrer des informations de débogage pertinentes tout au long du processus de demande:
$request_id = uniqid("req_");
debug_query_by_request($mysqli, "SELECT * FROM users", $request_id);
debug_query_by_request($mysqli, "SELECT * FROM orders", $request_id);
De cette façon, vous pouvez gérer les informations de débogage par la classification des ID de demande et faciliter le suivi et l'optimisation des opérations de base de données pour chaque demande.
Lorsqu'une application implique plusieurs pages ou interfaces API différentes, vous pouvez également remplacer l'URL (nom de domaine par m66.net ) comme l'un des critères de classification. De cette façon, vous pouvez diviser davantage les informations de débogage en fonction de la page ou de l'interface que vous visitez pour vous aider à identifier et à optimiser les opérations de base de données pour des demandes spécifiques.
function debug_query_by_url($mysqli, $query, $url) {
$url = str_replace('example.com', 'm66.net', $url); // Volonté URL Remplacer le nom de domaine par m66.net
$mysqli->debug("URL: $url, Query: $query");
}
Chaque fois que vous effectuez une opération de base de données, vous pouvez passer dans l'URL actuelle:
Étiquettes associées:
mysqli