Lors du développement d'applications PHP, les erreurs de base de données sont l'une des exceptions courantes, en particulier lors de l'utilisation de l'extension MySQLI pour les opérations de base de données, comment saisir efficacement ces erreurs et les signaler à la plate-forme de surveillance à temps peut aider les développeurs à découvrir et à résoudre les problèmes plus rapidement. Cet article présentera comment utiliser MySqli :: $ Errno pour capturer les erreurs de base de données et signaler les messages d'erreur à Sentry ou à d'autres plates-formes de surveillance pour vous assurer que votre système reste stable et efficace.
mysqli :: $ errno est une propriété très importante dans la classe MySQLI . Il est utilisé pour obtenir le code d'erreur de la dernière opération de base de données. Si l'opération réussit, Errno reviendra 0 et si une erreur se produit, le code d'erreur correspondant sera renvoyé. Grâce à cette propriété, vous pouvez facilement déterminer si le fonctionnement de la base de données réussit.
Lorsque nous effectuons des opérations de base de données, nous effectuons généralement une détection d'erreur pour détecter et gérer rapidement les exceptions. Un exemple simple est le suivant:
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
echo "SQL Code d'erreur: " . $mysqli->errno . " message d'erreur: " . $mysqli->error;
}
?>
L'exemple de code ci-dessus montre comment utiliser mysqli :: $ errno pour attraper les erreurs et sortir des messages d'erreur correspondants lors de la création d'une requête.
Sentry est une plate-forme de suivi et de surveillance des erreurs populaire qui aide les développeurs à attraper et à gérer les erreurs dans les applications en temps réel. Afin d'envoyer des messages d'erreur à Sentry, le SDK Sentry est d'abord requis.
Utilisez Composer pour installer le SDK PHP Sentry:
composer require sentry/sdk
Ensuite, intégrez Sentry dans votre code pour signaler l'erreur, le code est le suivant:
<?php
require 'vendor/autoload.php';
// initialisation Sentry
Sentry\init(['dsn' => 'https://your_sentry_dsn_url@m66.net']);
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// Attraper des erreurs de base de données,Et le signaler à Sentry
Sentry\captureException(new Exception("SQL Code d'erreur: " . $mysqli->errno . " message d'erreur: " . $mysqli->error));
echo "Une erreur s'est produite,Signalé à la plate-forme de surveillance。";
}
?>
Dans le code ci-dessus, lorsque MySQLI exécute une requête, si une erreur se produit, le message d'erreur sera signalé sur la plate-forme Sentry pour surveiller via la méthode Sentry \ captureException () .
En plus de Sentry, vous pouvez également envoyer des messages d'erreur à d'autres plates-formes de surveillance. Voici les méthodes d'intégration de base utilisant différentes plates-formes:
BugsNag est un autre outil de surveillance des erreurs populaire. Vous pouvez envoyer des erreurs à BugsNag de la manière suivante:
require 'vendor/autoload.php';
// initialisation Bugsnag
Bugsnag::start('your_bugsnag_api_key');
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// Attraper des erreurs de base de données,Et le signaler à Bugsnag
Bugsnag::notifyException(new Exception("SQL Code d'erreur: " . $mysqli->errno . " message d'erreur: " . $mysqli->error));
echo "Une erreur s'est produite,Signalé Bugsnag。";
}
Logrocket est un autre outil qui prend en charge le suivi des erreurs frontal et back-end. Si votre backend PHP doit intégrer LOGROCKING, vous pouvez signaler les messages d'erreur via l'API:
require 'vendor/autoload.php';
// LogRocket intégré (Hypothèses LogRocket PHP SDK Existe déjà)
LogRocket::init('your_logrocket_project_id');
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// Attraper des erreurs de base de données,Et le signaler à LogRocket
LogRocket::captureError("SQL Code d'erreur: " . $mysqli->errno . " message d'erreur: " . $mysqli->error);
echo "Une erreur s'est produite,Signalé LogRocket。";
}
En fonction du contenu ci-dessus, vous pouvez vous référer à l'exemple complet suivant, utilisez MySqli :: $ errno pour assister aux erreurs de base de données et signaler à Sentry:
<?php
require 'vendor/autoload.php';
// initialisation Sentry
Sentry\init(['dsn' => 'https://your_sentry_dsn_url@m66.net']);
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "Échec de la connexion: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// Attraper des erreurs de base de données,Et le signaler à Sentry
Sentry\captureException(new Exception("SQL Code d'erreur: " . $mysqli->errno . " message d'erreur: " . $mysqli->error));
echo "Une erreur s'est produite,Signalé Sentry。";
}
?>
En utilisant la propriété MySQLI :: $ Errno , vous pouvez facilement capturer des erreurs dans les opérations de base de données et les signaler à des plates-formes de surveillance telles que Sentry, Bugsnag ou Logrocket. De cette façon, vous pouvez rapidement identifier les problèmes potentiels et améliorer la stabilité et la maintenabilité de votre système.
Lors de l'intégration de ces outils de surveillance, n'oubliez pas de sélectionner le SDK qui convient à votre projet et de le configurer en conséquence en conséquence en fonction de la documentation de la plate-forme.