MySqli :: Debug () est un outil de débogage relativement inutile mais très puissant en PHP. Il permet aux développeurs d'activer la fonction de débogage de l'extension MySQLI sous-jacente, analysant ainsi les détails dans les connexions, l'exécution de la requête, etc. Après PHP 8.1, la prise en charge des paramètres de MySQLI :: Debug () est plus flexible, en particulier les options de trace , qui fournit aux développeurs des capacités de personnalisation plus fortes.
Cet article introduira la façon d'utiliser et la configuration avancée des options de trace MySQLI :: Debug () et combinez quelques exemples pour vous aider à mieux comprendre son objectif.
MySQLI :: Debug () est une méthode utilisée pour activer la sortie Debug, c'est en fait une version orientée objet de la fonction mysqli_debug () . Il accepte un paramètre de chaîne qui spécifie les options de débogage.
mysqli::debug(string $options): bool
Parmi eux, $ Options est l'objectif sur lequel nous voulons nous concentrer - un ensemble de paramètres de débogage séparés par des virgules, tels que:
mysqli::debug("d:t:o,/tmp/client.trace")
Dans les chaînes de débogage, plusieurs options communes incluent:
débogage dénommé
Trace tenable (trace)
o, <Fichier> Écrire la sortie de débogage dans le fichier spécifié
I, <Fichier> Lire la configuration à partir du fichier spécifié
F Call de fonction d'enregistrement
A enregistre tous les appels (plus verbeux)
N Afficher le contenu de la communication réseau
Vous pouvez combiner ces options pour permettre une surveillance détaillée de l'exécution de MySQLI.
Supposons que vous souhaitiez enregistrer les informations de débogage dans le répertoire / TMP du serveur:
<?php
mysqli::debug("d:t:o,/tmp/mysqli.trace.log");
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("Échec de la connexion: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$mysqli->close();
?>
Cette configuration sera:
Activer le débogage ( D )
Activer la fonction de suivi ( T )
Enregistrez la sortie sur /tmp/mysqli.trace.log
mysqli::debug("d:t:F:o,/tmp/trace_func.log");
Lorsque le paramètre F est activé, le journal contient une pile d'appels pour chaque fonction MySQLI, ce qui est particulièrement utile pour analyser les goulots d'étranglement des performances.
Vous pouvez définir à l'avance les paramètres de débogage en lisant le fichier de configuration:
// config.txt contenu:d:t:o,/tmp/from_config.log
mysqli::debug("i,/var/www/html/config.txt");
Cela évite le codage dur, augmente la flexibilité et convient aux grands projets ou aux environnements de déploiement de débogage.
Si vous pensez qu'il y a quelque chose qui ne va pas avec la communication entre le client et le serveur, vous pouvez activer N :
mysqli::debug("d:t:n:o,/tmp/net_debug.log");
Veuillez noter: Les journaux générés par cette option peuvent contenir des données sensibles et doivent être strictement protégés.
Une fois le journal de débogage généré, vous pouvez le visualiser via la commande suivante:
tail -f /tmp/mysqli.trace.log
Lorsque vous utilisez dans des environnements de production, il est recommandé de remplacer le chemin du fichier de journal par un répertoire de journal dédié et de définir les autorisations appropriées.
Combiné avec des URL front-end, vous pouvez même associer des journaux à ID de trace, tels que:
$traceId = uniqid("trace_", true);
mysqli::debug("d:t:o,/tmp/$traceId.log");
header("X-Debug-Trace: https://m66.net/debug/$traceId.log");
De cette façon, vous pouvez obtenir des liens de suivi dans les outils du développeur du navigateur et localiser rapidement les problèmes.
Les options de trace de MySQLI :: Debug () offrent aux développeurs des méthodes de débogage puissantes. En configurant raisonnablement la chaîne de trace, vous pouvez réaliser:
Analyse des appels de fonction
Débogage du réseau
Gestion des journaux centralisés
Combiné avec l'évolutivité des fichiers de configuration
Pendant la phase de développement et de test, faire bon usage de ces options de trace permetra non seulement beaucoup de temps de dépannage, mais vous aidera également à comprendre plus profondément le mécanisme d'interaction entre PHP et MySQL.