PHP applications များကိုတီထွင်သောအခါဒေတာဘေ့စ်လုပ်ငန်းများတည်ငြိမ်မှုသည်အလွန်အရေးကြီးသည်။ အထူးသဖြင့်မြင့်မားသောတစ်ပြိုင်နက်တည်း applicency များအရဒေတာဘေ့စ်ဆက်သွယ်မှုပြတ်တောက်မှုများကိုမည်သို့ကိုင်တွယ်ဖြေရှင်းရမည်သို့မဟုတ်အမှားအယွင်းများကိုမည်သို့ကိုင်တွယ်ဖြေရှင်းရမည်နည်း။ ဤဆောင်းပါးတွင် MySQLI :: errno ကို အသုံးပြုရမည်ကိုကျွန်ုပ်တို့လေ့လာမည်။
PHP ၏ MySQLI extension တွင် $ errno attribute သည်နောက်ဆုံး MySQL စစ်ဆင်ရေး၏အမှားကုဒ်ကိုသိုလှောင်ထားသည်။ ဒေတာဘေ့စ်လုပ်ငန်းများကိုကျွန်ုပ်တို့လုပ်ဆောင်သောအခါအမှားတစ်ခုဖြစ်ပါက MySQL သည်အမှားကုဒ်တစ်ခုကိုပြန်ပို့လိမ့်မည် ။ အမှားကုဒ်ပေါ် မူတည်. ပြန်လည်ကြိုးစားခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။
ဒေတာဘေ့စ်စစ်ဆင်ရေးများတွင်အသုံးများသောအမှားများတွင် -
ယာယီကွန်ရက်ပြတ်လပ်မှု
ဒေတာဘေ့စဆက်သွယ်မှုအရေအတွက်သည်အထက်ကန့်သတ်ချက်သို့ရောက်သည်
MySQL 0 န်ဆောင်မှုကိုယာယီမရနိုင်ပါ။
ဤအမှားများသည်များသောအားဖြင့်ယာယီသာဖြစ်ပြီးလျှောက်လွှာ၏တည်ငြိမ်မှုကိုသင့်လျော်သောပြန်လည်ထူထောင်ရေးနည်းဗျူဟာများဖြင့်တိုးတက်စေနိုင်သည်။ အကယ်. သင်သည်အမှားအယွင်းကိုလျင်မြန်စွာဆုံးဖြတ်ရန်နှင့်အချိန်တန်လျှင်ပြန်လည်ကြိုးစားပါက၎င်းသည်ရံဖန်ရံခါအမှားများကြောင့်ဒေတာဘေ့စ်စစ်ဆင်ရေးပျက်ကွက်မှု၏အခွင့်အရေးကိုများစွာလျှော့ချနိုင်သည်။
နောက်တစ်ခုက MySQLI :: $ errno အပေါ် အခြေခံ. အမှားလုပ်စရာနည်းလမ်းကိုကျွန်ုပ်တို့အကောင်အထည်ဖော်မည်။ ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်ကြိုးစားပါမည်။ ဆက်သွယ်မှုပျက်ကွက်လျှင်ထပ်မံကြိုးစားပါမည်။
<?php
// ဒေတာဘေ့စ် connection parameters တွေကိုသတ်မှတ်ပါ
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'test_db';
// Retry Times အများဆုံးအရေအတွက်ကိုသတ်မှတ်ပါ
$maxRetries = 3;
$retryInterval = 2; // ကြားကာလအချိန်ကိုပြန်ကြိုးစားပါ(စက်ဏန့်)
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
function createConnection($host, $username, $password, $database) {
$connection = new mysqli($host, $username, $password, $database);
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($connection->connect_error) {
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $connection->connect_error . "\n";
return false;
}
return $connection;
}
// ချိတ်ဆက်ပြီးထပ်ကြိုးစားပါ
function tryConnection($host, $username, $password, $database, $maxRetries, $retryInterval) {
$retries = 0;
$connection = null;
while ($retries < $maxRetries) {
$connection = createConnection($host, $username, $password, $database);
if ($connection) {
// အောင်မြင်စွာဆက်သွယ်မှု,ဆက်သွယ်မှုအရာဝတ်ထုသို့ပြန်သွားပါ
return $connection;
}
// အမှားကုဒ်ကိုရယူပါ
$errno = $connection->connect_errno;
// ၎င်းသည်အမှားကုဒ်အပေါ် အခြေခံ. ယာယီအမှားရှိမရှိဆုံးဖြတ်ပါ
if ($errno == 2002 || $errno == 1040) {
// ဥပမာအားဖြင့်:2002ဒေတာဘေ့စ်ဆာဗာချိတ်ဆက်မရနိုင်ပါ,1040ဒေတာဘေ့စ်ဆက်သွယ်မှုများစွာရှိကြောင်းဖော်ပြသည်
echo "数据库ဆက်သွယ်မှုမအောင်မြင်ပါ,နောက်တဖန်ကြိုးစားနေ...(အမှားကုဒ်:$errno)\n";
$retries++;
sleep($retryInterval); // နောက်တဖန်မကြိုးစားမီခဏစောင့်ပါ
} else {
// အမှားအခြားအမျိုးအစားဖြစ်ပါတယ်လျှင်,Retry အဆုံးသတ်
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ,အမှားကုဒ်:$errno\n";
break;
}
}
if ($retries == $maxRetries) {
echo "အများဆုံး retryes ရောက်ရှိလာခဲ့,ဒေတာဘေ့စကို ဆက်သွယ်. မရပါ。\n";
return null;
}
return $connection;
}
// Retry function ကိုခေါ်ပါ
$connection = tryConnection($host, $username, $password, $database, $maxRetries, $retryInterval);
if ($connection) {
echo "数据库အောင်မြင်စွာဆက်သွယ်မှု!\n";
// အခြားဒေတာဘေ့စ်စစ်ဆင်ရေးကိုလုပ်ဆောင်ပါ...
} else {
echo "ဒေတာဘေ့စကို ဆက်သွယ်. မရပါ,ကျေးဇူးပြု. နောက်မှထပ်ကြိုးစားပါ。\n";
}
?>
Connection function createConnection () - ဤလုပ်ဆောင်မှုကို MySQL ဒေတာဘေ့စ် connection တစ်ခုကိုဖန်တီးရန်နှင့် Connection Object ကိုပြန်ပို့ရန်အသုံးပြုသည်။ ဆက်သွယ်မှုပျက်သွားလျှင် မှားယွင်းစွာ ပြန်လာသည်။
retry function tryconnection () : ဒီ function ကိုအတွက်, ကျနော်တို့ပြန်လည်ကြိုးစားမှုယန္တရားကိုအကောင်အထည်ဖော်ရန်။ ၎င်းသည်ဒေတာဘေ့စ်ကိုချိတ်ဆက်ရန်ကြိုးစားလိမ့်မည်။ ဆက်သွယ်မှုပျက်ကွက်ပါကအမှားကုဒ်အပေါ် မူတည်. ပြန်လည်ကြိုးစားခြင်းရှိမရှိဆုံးဖြတ်လိမ့်မည်။ Connect_ERRNO ကို အသုံးပြု. အမှားကုဒ်များကိုရရန်နှင့်၎င်းသည်ယာယီဆက်သွယ်မှုအမှား (ဥပမာ, ဒေတာဘေ့စ်များစသည်တို့စသည်တို့စသည်တို့) ဟုတ်မဟုတ်စစ်ဆေးသည်။ သို့ဆိုလျှင်အမြင့်ဆုံးပြန်ကြိုးစားမှုအရေအတွက်မရောက်မှီတိုင်အောင်ခဏမကြိုးစားမီခဏစောင့်ပါမည်။
အမှားကုဒ်၏တရားစီရင်ချက် -
အမှားကုဒ် 2002 တွင် ဒေတာဘေ့စ်ဆာဗာ ချိတ်ဆက်. မရပါဟုဖော်ပြသည်။
အမှားကုဒ် 1040 သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုများစွာရှိကြောင်းဖော်ပြသည်။
ကွဲပြားခြားနားသောအမှားများနှင့် ပတ်သက်. ဆုံးဖြတ်ချက်များကိုပိုမိုထိရောက်သောဆုံးဖြတ်ချက်များကိုပိုမိုဆိုးရှားစေသည့်အတွက်အမှားအယွင်းများဖြင့်တရားစွဲဆိုမှုများပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်:
Error Code 2003 - MySQL server နှင့်ဆက်သွယ်မှုကိုလက်လှမ်းမမီပါသို့မဟုတ်ဆာဗာကိုမစတင်ပါ။
အမှားကုဒ် 1045 : အသုံးပြုသူအမည်သို့မဟုတ်စကားဝှက်မှားကြောင်းဖော်ပြသည်။ ဤသည်ရှင်းလင်းပြတ်သားစွာ configuration အမှားတစ်ခုဖြစ်ပြီးပြန်မရသင့်ပါ။
အမှားကုဒ်တစ်ခုစီအတွက်ကျွန်ုပ်တို့သည်ကွဲပြားသော Retry Interval ကိုသတ်မှတ်နိုင်သည်,
MySQLI :: $ errno ကို အသုံးပြု. ဒေတာဘေ့စ်လည်ပတ်မှုအမှားအယွင်းများကိုဆုံးဖြတ်ရန်အတွက်ကျွန်ုပ်တို့သည်ကွန်ယက်ပြတ်တောက်မှုများသို့မဟုတ်ယာယီအမှားများကြောင့်ဖြစ်ပေါ်သောဒေတာဘေ့စ်၏ဆက်သွယ်မှုပျက်ကွက်မှုကိုရှောင်ရှားရန်ထိရောက်သောအမှားလုပ်စရာယန္တရားကိုအကောင်အထည်ဖော်နိုင်သည်။ ကျိုးကြောင်းဆီလျော်စွာပြန်လည်နေရာချထားချိန်ကိုပြန်လည်သတ်မှတ်ခြင်းနှင့်ပြန်လည်ပြုပြင်ခြင်းကြားကာလသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်ဒေတာဘေ့စ်လုပ်ငန်းများတည်ငြိမ်မှုကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။ ဤကျွမ်းကျင်မှုများဖြင့်ကျွမ်းကျင်မှုများဖြင့်လျှောက်လွှာနှင့်ဒေတာဘေ့စ်အကြားအပြန်အလှန်ဆက်သွယ်မှုကိုသင်ပိုမိုကောင်းမွန်စွာထိန်းချုပ်နိုင်ပြီးစနစ်၏ယုံကြည်စိတ်ချရမှုကိုသေချာစေနိုင်သည်။