Dans PHP, l'extension MySQLI fournit un outil puissant pour les opérations de base de données MySQL. MySqli :: Debug est l'une des fonctions très utiles qui peuvent nous aider à déboguer pendant le développement. Cependant, lorsque vous utilisez cette fonction dans différents environnements d'exécution, il y aura certaines différences. Dans cet article, nous discuterons de la différence lorsque vous utilisez MySQLI :: Debug dans l'interface de la ligne de commande (CLI) et les environnements Web, et explorer comment déboguer en fonction de différents environnements.
MySQLI :: Debug est une méthode statique qui permet le mode de débogage de MySQL. Cette méthode nous permet de produire des informations de débogage MySQL et nous aide à diagnostiquer les problèmes lors de l'exécution de la requête.
mysqli::debug(string $message);
<?php
// Activer le mode de débogage
mysqli::debug('client_trace=1; record=1');
?>
Lorsque le mode de débogage est activé, MySQL offre une grande quantité d'informations de débogage, y compris les journaux de requête, les messages d'erreur et les informations de connexion. Ces informations peuvent aider les développeurs à comprendre les détails de l'exécution des requêtes.
Dans l'environnement de l'interface de ligne de commande (CLI), la sortie de MySqli :: Debug sera affichée directement dans le terminal de la ligne de commande. Lorsque nous exécutons des scripts PHP dans un environnement CLI, les informations de débogage sont généralement des résultats directement vers la sortie standard.
Supposons que nous exécutons un script PHP comme suit:
<?php
mysqli::debug('client_trace=1; record=1');
$conn = new mysqli('localhost', 'root', '', 'test');
$conn->query("SELECT * FROM users");
?>
Lorsque le script est exécuté dans l'environnement CLI, les informations de débogage seront affichées sur le terminal.
Les informations de débogage dans un environnement CLI sont très faciles à obtenir et sont affichées directement dans la console.
Vous pouvez afficher toutes les opérations de base de données et le débogage des informations en temps réel pour aider les développeurs à localiser rapidement les problèmes.
Étant donné que les scripts CLI n'impliquent généralement pas la journalisation du serveur Web, les informations de débogage s'affichent directement sur le terminal, mais une configuration supplémentaire est requise si vous souhaitez enregistrer les informations de débogage dans un fichier.
Dans un environnement Web, la sortie de MySqli :: Debug ne s'affiche pas directement dans le navigateur. Les environnements Web gèrent généralement les demandes via des serveurs Web tels que Apache ou Nginx, ce qui signifie que les informations de débogage sont connectées au fichier journal du serveur Web et ne sont pas affichées directement à l'utilisateur.
<?php
mysqli::debug('client_trace=1; record=1');
$conn = new mysqli('localhost', 'root', '', 'test');
$conn->query("SELECT * FROM users");
?>
Lorsque le script est exécuté dans un environnement Web, les informations de débogage sont écrites dans le journal d'erreur du serveur Web et n'apparaissent pas dans la sortie du navigateur.
Les informations de débogage dans l'environnement Web ne seront pas directement exposées à l'utilisateur, ce qui améliore la sécurité.
Les informations de débogage peuvent être enregistrées pour journaliser les fichiers pour une visualisation et une analyse plus faciles.
Vous devez afficher le journal d'erreur du serveur Web (comme Apache d' erreur_log ) pour voir les informations de débogage.
Si vous avez besoin de produire des informations de débogage à un endroit spécifique (comme un fichier), il peut être réalisé via une configuration personnalisée.
L'environnement CLI est l'un des environnements de débogage les plus couramment utilisés au cours du développement, et vous pouvez afficher tous les résultats de débogage directement du terminal. Si vous souhaitez activer un débogage détaillé dans l'environnement CLI, vous pouvez utiliser le code suivant:
<?php
if (php_sapi_name() == 'cli') {
mysqli::debug('client_trace=1; record=1');
// Effectuer des opérations de base de données
$conn = new mysqli('localhost', 'root', '', 'test');
$conn->query("SELECT * FROM users");
}
?>
Ici, nous utilisons la fonction php_sapi_name () pour déterminer si l'environnement actuel est CLI. Ce n'est que dans l'environnement CLI .
Les informations de débogage dans un environnement Web sont généralement enregistrées dans un fichier journal. Si vous souhaitez afficher les informations de débogage dans un environnement Web, vous pouvez rediriger la sortie de débogage vers un fichier journal ou afficher le journal d'erreur du serveur Web. Par exemple:
<?php
if (php_sapi_name() != 'cli') {
mysqli::debug('client_trace=1; record=1');
// Effectuer des opérations de base de données
$conn = new mysqli('localhost', 'root', '', 'test');
$conn->query("SELECT * FROM users");
}
?>
Cela garantit que les informations de débogage sont sorties et enregistrées uniquement dans un environnement Web.
Pour résumer, MySQLI :: Debug est utilisé différemment dans les environnements CLI et Web. Dans l'environnement CLI, les informations de débogage sont diffusées directement vers le terminal, tandis que dans l'environnement Web, les informations de débogage sont généralement enregistrées dans le journal du serveur Web. Selon différents environnements d'exploitation, nous pouvons utiliser des instructions conditionnelles pour décider d'activer l'opportunité d'informations de débogage, garantissant ainsi un débogage efficace dans différents environnements.
Pendant le débogage, n'oubliez pas de ne pas permettre au mode de débogage en production d'éviter la fuite d'informations sensibles. Utilisez MySqli :: Debug uniquement dans les environnements de développement et de test et assurez-vous que les informations sur les journaux sont visibles uniquement pour les développeurs.