PHPアプリケーションを開発する場合、データベースエラーは一般的な例外の1つです。特に、データベース操作にMySQLI拡張機能を使用する場合、これらのエラーを効果的にキャッチし、監視プラットフォームに時間内に監視プラットフォームに報告する方法は、開発者が問題をより速く発見して解決するのに役立ちます。この記事では、MySqli :: $ errnoを使用してデータベースエラーをキャプチャし、エラーメッセージをSentryまたは他の監視プラットフォームに報告する方法を紹介し、システムが安定して効率的であることを確認します。
mysqli :: $ errnoは、 mysqliクラスの非常に重要なプロパティです。最後のデータベース操作のエラーコードを取得するために使用されます。操作が成功した場合、 errnoは0を返し、エラーが発生した場合、対応するエラーコードが返されます。このプロパティを通じて、データベース操作が成功しているかどうかを簡単に判断できます。
データベース操作を実行するとき、通常、エラー検出を実行して、例外を迅速に検出および処理します。簡単な例は次のとおりです。
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "接続に失敗しました: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
echo "SQL エラーコード: " . $mysqli->errno . " エラーメッセージ: " . $mysqli->error;
}
?>
上記のコードの例は、MySqli :: $ errnoを使用して、クエリを作成するときにエラーと出力に対応するエラーメッセージをキャッチする方法を示しています。
Sentryは、開発者がアプリケーションのエラーをリアルタイムでキャッチおよび処理するのに役立つ一般的なエラー追跡および監視プラットフォームです。セントリーにエラーメッセージを送信するには、Sentry SDKが最初に必要です。
Composerを使用してSentry PHP SDKをインストールします。
composer require sentry/sdk
次に、セントリーをコードに統合してエラーを報告します。コードは次のとおりです。
<?php
require 'vendor/autoload.php';
// 初期化 Sentry
Sentry\init(['dsn' => 'https://your_sentry_dsn_url@m66.net']);
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "接続に失敗しました: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// データベースエラーをキャッチします,そしてそれを報告します Sentry
Sentry\captureException(new Exception("SQL エラーコード: " . $mysqli->errno . " エラーメッセージ: " . $mysqli->error));
echo "エラーが発生しました,監視プラットフォームに報告されています。";
}
?>
上記のコードでは、 mysqliがクエリを実行すると、エラーが発生した場合、 sentry \ captureexception()メソッドを介して監視するためにエラーメッセージがSentryプラットフォームに報告されます。
Sentryに加えて、他の監視プラットフォームにエラーメッセージを送信することもできます。さまざまなプラットフォームを使用した基本的な統合方法は次のとおりです。
Bugsnagは、もう1つの一般的なエラー監視ツールです。次の方法でBugsnagにエラーを送信できます。
require 'vendor/autoload.php';
// 初期化 Bugsnag
Bugsnag::start('your_bugsnag_api_key');
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "接続に失敗しました: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// データベースエラーをキャッチします,そしてそれを報告します Bugsnag
Bugsnag::notifyException(new Exception("SQL エラーコード: " . $mysqli->errno . " エラーメッセージ: " . $mysqli->error));
echo "エラーが発生しました,報告されています Bugsnag。";
}
Logrockockeは、フロントエンドとバックエンドのエラー追跡をサポートするもう1つのツールです。 PHPバックエンドがLogrocketを統合する必要がある場合は、APIを介してエラーメッセージを報告できます。
require 'vendor/autoload.php';
// LogRocket 統合 (仮定 LogRocket PHP SDK すでに存在します)
LogRocket::init('your_logrocket_project_id');
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "接続に失敗しました: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// データベースエラーをキャッチします,そしてそれを報告します LogRocket
LogRocket::captureError("SQL エラーコード: " . $mysqli->errno . " エラーメッセージ: " . $mysqli->error);
echo "エラーが発生しました,報告されています LogRocket。";
}
上記のコンテンツに基づいて、次の完全な例を参照してください。MySqli :: $ errnoを使用してデータベースエラーをキャッチし、Sentryにレポートします。
<?php
require 'vendor/autoload.php';
// 初期化 Sentry
Sentry\init(['dsn' => 'https://your_sentry_dsn_url@m66.net']);
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "接続に失敗しました: " . $mysqli->connect_error;
exit();
}
$query = "SELECT * FROM nonexistent_table";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// データベースエラーをキャッチします,そしてそれを報告します Sentry
Sentry\captureException(new Exception("SQL エラーコード: " . $mysqli->errno . " エラーメッセージ: " . $mysqli->error));
echo "エラーが発生しました,報告されています Sentry。";
}
?>
mysqli :: $ errnoプロパティを使用することにより、データベース操作のエラーを簡単にキャプチャして、Sentry、bugsnag、Logrocketなどの監視プラットフォームに簡単に報告できます。このようにして、潜在的な問題を迅速に特定し、システムの安定性と保守性を高めることができます。
これらの監視ツールを統合するときは、プロジェクトに適したSDKを選択し、それに応じてプラットフォームのドキュメントに従って構成することを忘れないでください。