ဒေတာဘေ့စ်အပြန်အလှန်ဆက်သွယ်မှုများပါ 0 င်သည့် PHP applications များကိုတီထွင်သောအခါဒေတာဘေ့စ်စစ်ဆင်ရေးအမှားများကိုဖမ်းယူခြင်းနှင့်ကိုင်တွယ်ခြင်းသည်အလွန်အရေးကြီးသည်။ အမှားတစ်ခုဖြစ်သည့်အခါစနစ်သည်အချက်များချက်ချင်းတုန့်ပြန်နိုင်ရန်နှင့်နှိုးစက်များကိုဖြေရှင်းနိုင်ရန်အတွက် MySQLI :: erressi :: errno function ကိုသုံးနိုင်သည်။ ဤဆောင်းပါးသည်ဤအင်္ဂါရပ်ကိုဒေတာဘေ့စ်ကိုစောင့်ကြည့်လေ့လာရေးနှိုးစက်စနစ်တွင်မည်သို့ပေါင်းစပ်ရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။
MySQLI :: $ errno သည် MySQLI အတန်းအစား၏ပိုင်ဆိုင်မှုတစ်ခုဖြစ်သည်။ လတ်တလော MySQL စစ်ဆင်ရေး၏အမှားကုဒ်ကိုဖော်ပြသည်။ ဒေတာဘေ့စ်စစ်ဆင်ရေးတစ်ခုပြုလုပ်သောအခါအမှားတစ်ခုဖြစ်ပါကပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုတွင်သီးခြားအမှားနံပါတ်ပါရှိသည်။ ဤအမှားနံပါတ်ကို အခြေခံ. နောက်ထပ်အမှားကိုင်တွယ်ခြင်းသို့မဟုတ်နှိုးစက်လုပ်ဆောင်နိုင်သည်။
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
echo "ဆက်သွယ်မှုအမှား (" . $mysqli->connect_errno . "): " . $mysqli->connect_error;
}
MySQLI ကို ဆက်သွယ်စဉ်အမှားတစ်ခုဖြစ်သောအမှားတစ်ခုဖြစ်ပါက $ MySQLI-> Connect_errno သည် အမှားကုဒ်တစ်ခုကိုပြန်ပို့လိမ့်မည်။
ဒေတာဘေ့စ်စစ်ဆင်ရေးများအတွင်း MOSSQLIE :: MySQLI :: errno ကိုဤလိုအပ်ချက်ရရှိရန်အတွက် MOSSQLI :: errno ကို ပေါင်းစပ်နိုင်သည်။ အထူးသဖြင့်အောက်ပါအဆင့်များကိုအသုံးပြုနိုင်သည်။
ဒေတာဘေ့စ်နှင့်သင်အပြန်အလှန်ဆက်သွယ်သည့်အခါတိုင်း MySQLI :: အမှားတစ်ခုဖြစ်ပွားခြင်းရှိမရှိဆုံးဖြတ်ရန် MySQLI :: errno ကို စစ်ဆေးသင့်သည်။ ဥပမာအားဖြင့်, စုံစမ်းမှုတစ်ခုသို့မဟုတ်ဒေတာထည့်သွင်းသည့်အခါအမှားတစ်ခုဖြစ်ပေါ်လာပြီးနှိုးစက်ဖြစ်ပေါ်လာသည့်အခါအမှားအယွင်းများကိုကျွန်ုပ်တို့မှတ်တမ်းတင်နိုင်သည်။
$query = "SELECT * FROM users";
$result = $mysqli->query($query);
if ($mysqli->errno) {
// အမှားတစ်ခုဖြစ်ပေါ်သည့်အခါ,အမှားသတင်းအချက်အလက်မှတ်တမ်း
error_log("MySQL အမှားကုဒ်: " . $mysqli->errno . " အမှားသတင်းစကား: " . $mysqli->error);
// တုန်လှုပ်ချောက်ချား
sendAlert($mysqli->errno, $mysqli->error);
}
ဒေတာဘေ့စအမှားတစ်ခုကိုရှာဖွေတွေ့ရှိသောအခါ sendalert function မှတဆင့်နှိုးစက်ကိုပေးပို့နိုင်ပါတယ်။ ဤလုပ်ဆောင်ချက်သည်အီးမေးလ်, စာသားမက်ဆေ့ခ်ျသို့မဟုတ်အခြားနည်းလမ်းများမှအုပ်ချုပ်ရေးမှူးအားအသိပေးနိုင်သည်။ ဤနေရာတွင်ကျွန်ုပ်တို့သည်နှိုးစက်များကိုဥပမာတစ်ခုအဖြစ်ပို့ရန်အီးမေးလ်ကိုအသုံးပြုသည်။
function sendAlert($errno, $error_message) {
$to = "admin@m66.net"; // အုပ်ချုပ်ရေးမှူးအီးမေးလ်
$subject = "ဒေတာဘေ့စအမှားနှိုးစက်";
$message = "ဒေတာဘေ့စအမှားတစ်ခုဖြစ်ပွားခဲ့သည်,အမှားကုဒ်: $errno,အမှားသတင်းစကား: $error_message";
// အီးမေးလ်ပို့ပါ
mail($to, $subject, $message);
}
တစ်ခါတစ်ရံတွင် connection timeouts စသည့်စနစ်၏ပုံမှန်လည်ပတ်မှုစသဖြင့်စနစ်၏ပုံမှန်လည်ပတ်မှုကြောင့်ဒေတာဘေ့စ်အမှားများသည်ယာယီပြ problems နာများဖြစ်နိုင်သည်။
// မှတ်တမ်းတင်ထားသောအမှားများအရေအတွက်
$alertThreshold = 5;
$errorCount = 0;
// 假设အမှားတစ်ခုဖြစ်ပေါ်သည့်အခါ会执行下面的代码
if ($mysqli->errno) {
$errorCount++;
// အမှားအယွင်းများ၏နံပါတ်တံခါးခုံကိုကျော်လွန်ပါ,နှိုးစက်ပို့ပါ
if ($errorCount >= $alertThreshold) {
sendAlert($mysqli->errno, $mysqli->error);
$errorCount = 0; // အမှားရေတွက်ပြန်လည်စတင်ပါ
}
}
ကွဲပြားခြားနားသောဒေတာဘေ့စအမှားအယွင်းများကွဲပြားခြားနားသောကိုင်တွယ်နည်းလမ်းများလိုအပ်နိုင်ပါသည်။ ဥပမာ connection အမှားများနှင့်စုံစမ်းမှုအမှားများတွင်မတူညီသောနှိုးစက်ပေါ်လစီများရှိနိုင်သည်။ အမှားအယွင်းများကိုအမှားအယွင်းများပေါ်တွင် အခြေခံ. အမှားအယွင်းများကို ခွဲခြား. ကွဲပြားခြားနားသောအစီအမံများကိုခွဲခြားနိုင်သည်။
if ($mysqli->errno) {
switch ($mysqli->errno) {
case 1045: // ခွင့်ပြုချက်အမှား
sendAlert($mysqli->errno, "ခွင့်ပြုချက်အမှား: " . $mysqli->error);
break;
case 2002: // ဆက်သွယ်မှုအမှား
sendAlert($mysqli->errno, "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->error);
break;
default:
sendAlert($mysqli->errno, "အမည်မသိအမှား: " . $mysqli->error);
}
}
MySQLI :: $ errno ကို သုံး. ဒေတာဘေ့စ်စောင့်ကြည့်လေ့လာမှုနှိုးစက်များကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသသည့်ကုဒ်ရိုးရှင်းသောမူကွဲတစ်ခု၏ရိုးရှင်းသောကျင့်သုံးသောမူကွဲတစ်ခုဖြစ်သည်။