PHP applications များကိုတီထွင်သောအခါဒေတာဘေ့စ်ဆက်သွယ်မှုတည်ငြိမ်မှုသည်အလွန်အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။ အထူးသဖြင့်တစ်ပြိုင်နက်တည်းသို့မဟုတ်မြင့်မားသောကွန်ယက်အတက်အကျနှင့်အတူပတ်ဝန်းကျင်တွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုများအနှောင့်အယှက်ဖြစ်စေနိုင်သည်သို့မဟုတ် invalidated ဖြစ်နိုင်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန် $ errno အမှားကုဒ်အပေါ် အခြေခံ. ဒေတာဘေ့စ်ပြန်လည်ချိတ်ဆက်မှုယန္တရားကိုအလိုအလျောက်အကောင်အထည်ဖော်နိုင်သည်။ PHP တွင် $ errno error code မှတဆင့်ဒေတာဘေ့စ်များကိုအလိုအလျောက်ပြန်လည်ချိတ်ဆက်နည်းကိုဤဆောင်းပါးကမိတ်ဆက်ပေးလိမ့်မည်။
PHP တွင် Database Operations ကိုလုပ်ဆောင်သောအခါ connection error error errics တစ်ခုဖြစ်လာပါက Database သည်အမှားကုဒ် $ errno ကို ပြန်ပို့လိမ့်မည်။ ဒေတာဘေ့စ်ပြန်လည်ချိတ်ဆက်မှုကိုအမှားကုဒ်အပေါ် အခြေခံ. လိုအပ်သည်ကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။ များသောအားဖြင့်သာမန်အမှားကုဒ်များမှာအောက်ပါအတိုင်းဖြစ်သည် -
2002 : MySQL server ကို ဆက်သွယ်. မရပါ။
2006 : MySQL server ကိုအဆက်ပြတ်နေသည်။
2013 - MySQL query timeout ။
အကယ်. ကျွန်ုပ်တို့သည်ဤအမှားကုဒ်များကိုဖမ်းမိပါကအမှားသည်ဒေတာဘေ့စ်ဆက်သွယ်မှုပြ problem နာကြောင့်ဖြစ်ပေါ်လာသည်ကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။
ပထမ ဦး စွာဒေတာဘေ့စ်ဆက်သွယ်မှုကိုတည်ဆောက်ရန် function တစ်ခုလိုအပ်သည်။ ဆက်သွယ်မှုမအောင်မြင်ပါကအမှားကုဒ်အပေါ် အခြေခံ. connection ကိုပြန်လည်ရယူရန်လိုအပ်, မလိုအပ်ကြောင်းဆုံးဖြတ်ရန်လိုအပ်သည်။
<?php
function connectToDatabase() {
$host = 'localhost'; // ဒေတာဘေ့စ်ဆာဗာ
$dbname = 'test_db'; // ဒေတာဘေ့စ်အမည်
$username = 'root'; // ဒေတာဘေ့စ်အသုံးပြုသူအမည်
$password = ''; // ဒေတာဘေ့စ်စကားဝှက်
try {
// ဒေတာဘေ့စ် connection တစ်ခုတည်ဆောက်ရန်ကြိုးစားပါ
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
// တည်ဆောက်သည်PDOချို့ယွင်းချက်သည်ခြွင်းချက်ဖြစ်သည်
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
} catch (PDOException $e) {
// ခြွင်းချက်များ,အမှားမက်ဆေ့ခ်ျကိုပြန်လာပါ
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $e->getMessage();
return null;
}
}
?>
ဤကုဒ်သည်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PDO OFF ကိုပြန်ပေးသည့်ရိုးရှင်းသောဒေတာဘေ့စ် connection connection connectocatabase တစ်ခုပေးသည်။ ဆက်သွယ်မှုမအောင်မြင်ပါက function သည် null ပြန်လာသည်။
ထို့နောက်ကျွန်ုပ်တို့သည် $ errno အမှားကုဒ်ကိုဆုံးဖြတ်ရန်နှင့်ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်သောအခါအလိုအလျောက်ပြန်လည်ချိတ်ဆက်ရန်လိုအပ်သည်။
<?php
function reconnectIfNeeded($pdo) {
// လှျင် PDO အရာဝတ်ထုဗလာဖြစ်ပါတယ်,表示数据库ဆက်သွယ်မှုမအောင်မြင်ပါ
if ($pdo === null) {
// ပြန်လည်ချိတ်ဆက်ရန်ကြိုးစားပါ
echo "正在ပြန်လည်ချိတ်ဆက်ရန်ကြိုးစားပါ数据库...";
$pdo = connectToDatabase();
}
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိဆုံးဖြတ်ရန်
if ($pdo !== null) {
echo "ဒေတာဘေ့စ်ဆက်သွယ်မှုအောင်မြင်သည်!";
} else {
echo "数据库ဆက်သွယ်မှုမအောင်မြင်ပါ,ကျေးဇူးပြု. နောက်မှထပ်ကြိုးစားပါ。";
}
return $pdo;
}
// ဒေတာဘေ့စ်စစ်ဆင်ရေးကိုတုပ
function queryDatabase($pdo) {
try {
// ရိုးရှင်းသောစုံစမ်းမှုစစ်ဆင်ရေးလုပ်ဆောင်ပါ
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}
} catch (PDOException $e) {
// ဖမ်းဆီး PDO ထူးခြားသော,နှင့်အမှားကုဒ်အပေါ်အခြေခံပြီးပြန်လည်ချိတ်ဆက်ရန်ရှိမရှိဆုံးဖြတ်ပါ
if ($e->getCode() == 2002 || $e->getCode() == 2006 || $e->getCode() == 2013) {
echo "ဒေတာဘေ့စ်ဆက်သွယ်မှုပြတ်တောက်,ပြန်လည်ချိတ်ဆက်ရန်ကြိုးစားပါ...\n";
// အဆိုပါ reacknect function ကိုခေါ်ခြင်း
$pdo = reconnectIfNeeded($pdo);
// နောက်တဖန်ဒေတာဘေ့စ်ကိုမေးမြန်းဖို့ကြိုးစားပါ
queryDatabase($pdo);
} else {
// အခြားအမှားများ,输出ထူးခြားသော信息
echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $e->getMessage();
}
}
}
// ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုစတင်ပါ
$pdo = connectToDatabase();
// စုံစမ်းမှုစစ်ဆင်ရေးလုပ်ဆောင်ပါ
queryDatabase($pdo);
?>
ConnectocTabase () : ဒေတာဘေ့စ် connection ကိုတည်ထောင်ရန်အသုံးပြုသည်။
ပြန်လည်စုစည်းထားသော () - ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုဗလာဖြစ်ရန်ရှာဖွေတွေ့ရှိသည့်အခါဤလုပ်ဆောင်မှုသည်ပြန်လည်ချိတ်ဆက်ရန်ကြိုးစားသည်။
queryDatabase () : ဒီ function ကိုဒေတာဘေ့စ်စုံစမ်းမှု excatues ။ ဆက်သွယ်မှုအမှားတစ်ခုဖြစ်ပါက (အမှားကုဒ် 2002, 2006, 2006, 2013) ကို ပြန်လည်ချိတ်ဆက်ခြင်း () reacknectifneeded () ကိုအလိုအလျောက်ပြန်လည်ချိတ်ဆက်ခြင်းနှင့်စုံစမ်းမှုကိုပြန်လည်ချိတ်ဆက်ပါလိမ့်မည်။
ဒေတာဘေ့စ်လုပ်ငန်းများလုပ်ဆောင်သောအခါ, ကျွန်ုပ်တို့သည် try-catch via မှတစ်ဆင့်ခြွင်းချက်ကိုဖမ်းပြီး $ errno error error code ကိုစစ်ဆေးသည်။ ဆက်သွယ်မှုကြားဖြတ်အမှားတစ်ခုကြုံတွေ့ရသောအခါပြန်လည်ချိတ်ဆက်ခြင်းနှင့်မေးမြန်းခြင်းအလိုအလျောက် ec-execute သည်။
ဒေတာဘေ့စ် connection ပြတ်တောက်ခြင်းပြတ်တောက်မှုကိုထိရောက်စွာဖမ်းယူနိုင်ရန်အတွက် $ errno error code ကိုသုံးပါ။ အထက်ပါကုဒ်ဥပမာသည်ဒေတာဘေ့စ်၏ဆက်သွယ်မှုအမှားများကိုမည်သို့ကိုင်တွယ်ရမည်ကိုပြသပြီး PHP တွင်ပြန်လည်ချိတ်ဆက်မှုကိုမည်သို့ကိုင်တွယ်ရမည်ကိုပြသသည်။ ကျိုးကြောင်းဆီလျော်သောအမှားဖြင့်ကိုင်တွယ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် application သည်ပုံမှန်အားဖြင့်ဒေတာဘေ့စ်ပျက်ကွက်မှု၏မျက်နှာတွင်ပုံမှန်လည်ပတ်နိုင်ကြောင်းသေချာစေနိုင်သည်။