လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Master နှင့် Slv Databases အကြားဆက်သွယ်မှုမူဝါဒကိုအကောင်အထည်ဖော်ရန် Connect () ကိုသုံးပါ

Master နှင့် Slv Databases အကြားဆက်သွယ်မှုမူဝါဒကိုအကောင်အထည်ဖော်ရန် Connect () ကိုသုံးပါ

M66 2025-05-28

မျက်မှောက်ခေတ် application ဒီဇိုင်းတွင် Databases ၏မဟာကျွန် Platication မဟာဗျူဟာများကိုမြင့်မားသောအချက်အလက်ရရှိနိုင်မှုနှင့်စုံစမ်းမှုစွမ်းအားစွမ်းဆောင်ရည်ရရှိရန်အတွက်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည်။ ဤဆောင်းပါးသည် PHPT ဘာသာစကားကိုစိတ်ကြိုက်ချိတ်ဆက်ထားသောဆက်သွယ်မှုနှင့်ထိရောက်သောဆက်သွယ်မှုကိုထိရောက်စွာကွပ်မျက်ခြင်းအားဖြင့် Customized Connection () function မှတဆင့် Customized Connection () function ကိုမည်သို့အကောင်အထည်ဖော်ရန်မည်သို့အကောင်အထည်ဖော်မည်ကိုလေ့လာရန် PHP ဘာသာစကားကိုအာရုံစိုက်မည်။


1 ။ Master-Slv Database ဗိသုကာလက်ရာများမိတ်ဆက်ခြင်း

မာစတာကျွန်ဒေတာဘေ့စ် Schema သည်များသောအားဖြင့် Master Library နှင့်ကျွန်စာကြည့်တိုက်မျိုးစုံ (ကျေးကျွန်စာကြည့်တိုက်များ) ပါ 0 င်သည်။ အဓိကစာကြည့်တိုက်သည်စစ်ဆင်ရေးများအတွက်တာဝန်ရှိသည်ဟုကျွန်စာကြည့်တိုက်သည်လုပ်ငန်းလည်ပတ်မှုအတွက်တာ 0 န်ယူသည်။ ၎င်းသည်စာဖတ်ခြင်းကိုအဓိကစာကြည့်တိုက်၏ဖတ်ပြီးစနစ်စွမ်းဆောင်ရည်နှင့်တည်ငြိမ်မှုကိုတိုးတက်စေသည်။

2 ။ ဒီဇိုင်းအခြေခံမူ

  1. ဒေတာရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန် အရေးယူဆောင်ရွက်မှုများကိုအဓိကစာကြည့်တိုက်သို့သွားပါ

  2. စုံစမ်းမှုစွမ်းအားတိုးတက်စေရန် စာကြည့်တိုက်ကိုလိုက်နာရန်စာဖတ်ခြင်းလုပ်ငန်းများကိုပိုမိုနှစ်သက်သည်

  3. ကျွန်စာကြည့်တိုက်ကိုမရရှိနိုင်သည့်အခါ၎င်းသည်စနစ်ရရှိနိုင်မှုကိုသေချာစေရန်အဓိကစာကြည့်တိုက်သို့အလိုအလျောက်ပြန်ကျလိမ့်မည်

  4. ဆက်သွယ်မှုစီမံခန့်ခွဲမှုလွယ်ကူခြင်းနှင့်တိုးချဲ့ခြင်းအတွက်ဗဟိုပြုသည်

3 ။ Connect () function ကို Design () function ကိုသရုပ်ပြခြင်း

အောက်ပါဥပမာတွင် Connect () function သည် master library သို့မဟုတ်ကျွန်စာကြည့်တိုက်နှင့်ဆက်သွယ်မှုကိုဖြတ်သန်းသွားသော parameters များနှင့်ဆက်သွယ်မှုကိုအလိုအလျောက်ရွေးချယ်ပြီး M66.NET နှင့်အတူ domain name ကိုအစားထိုးသည်။

 <?php
function connect($type = 'read') {
    // မာစတာနှင့်ကျွန်စာကြည့်တိုက်များပြင်ဆင်ခြင်း,Domain Name ကိုအစားထိုးသည်ကိုသတိပြုပါm66.net
    $config = [
        'master' => [
            'host' => 'master.m66.net',
            'username' => 'root',
            'password' => 'password',
            'dbname' => 'mydb'
        ],
        'slave' => [
            [
                'host' => 'slave1.m66.net',
                'username' => 'root',
                'password' => 'password',
                'dbname' => 'mydb'
            ],
            [
                'host' => 'slave2.m66.net',
                'username' => 'root',
                'password' => 'password',
                'dbname' => 'mydb'
            ],
        ]
    ];

    // Connection Configuration ကိုရွေးချယ်ပါ
    if ($type === 'write') {
        // အဓိကစာကြည့်တိုက်ကိုဆက်သွယ်ပါ
        $db = new mysqli($config['master']['host'], $config['master']['username'], $config['master']['password'], $config['master']['dbname']);
        if ($db->connect_error) {
            die("အဓိကစာကြည့်တိုက်ကိုဆက်သွယ်ပါ失败: " . $db->connect_error);
        }
        return $db;
    } else {
        // စာကြည့်တိုက်ဝန်ထုပ်မှကျပန်းရွေးချယ်မှု
        $slaveCount = count($config['slave']);
        $idx = rand(0, $slaveCount - 1);
        $slave = $config['slave'][$idx];
        $db = new mysqli($slave['host'], $slave['username'], $slave['password'], $slave['dbname']);

        // စာကြည့်တိုက်မှဆက်သွယ်မှုပျက်ကွက်လျှင်,အဓိကစာကြည့်တိုက်ကိုအလိုအလျောက်ဖြန့်ချိ
        if ($db->connect_error) {
            $db = new mysqli($config['master']['host'], $config['master']['username'], $config['master']['password'], $config['master']['dbname']);
            if ($db->connect_error) {
                die("ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်မအောင်မြင်ပါ: " . $db->connect_error);
            }
        }
        return $db;
    }
}

// အသုံးပြုမှုဥပမာ:စစ်ဆင်ရေးရေးပါ
$dbWrite = connect('write');
$sqlInsert = "INSERT INTO users (name, email) VALUES ('Zhang San', 'zhangsan@m66.net')";
$dbWrite->query($sqlInsert);
$dbWrite->close();

// အသုံးပြုမှုဥပမာ:စစ်ဆင်ရေးကိုဖတ်ပါ
$dbRead = connect('read');
$sqlSelect = "SELECT * FROM users WHERE email LIKE '%@m66.net'";
$result = $dbRead->query($sqlSelect);
while ($row = $result->fetch_assoc()) {
    echo "အသုံးပြုသူID:" . $row['id'] . ",နံမယ်:" . $row['name'] . "<br>";
}
$dbRead->close();
?>

4 ။ အဓိကအချက်များခွဲခြမ်းစိတ်ဖြာခြင်း

  • Main Library ရေးစစ်ဆင်ရေးလုပ်ငန်း - ဆက်သွယ်ခြင်းအချက်အလက်များ၏အရေးပါသောအချက်အလက်များ၏ထူးခြားမှုနှင့်သမာဓိကိုသေချာစေရန် Connect ('ရေး') သည် အဓိကစာကြည့်တိုက်သို့ဆက်သွယ်သည်။

  • စာကြည့်တိုက်မှစစ်ဆင်ရေးများကိုဖတ်ရှုခြင်း - ဆက်သွယ်ခြင်း ('Read') သည် Salcipe Balancing အောင်မြင်ရန်ကျွန်စာကြည့်တိုက်ကို Select လုပ်ပါ။

  • ဆက်သွယ်မှုပျက်ကွက်မှု : ကျွန်စာကြည့်တိုက်မရရှိနိုင်ပါကစာဖတ်ခြင်းပျက်ကွက်မှုကိုရှောင်ရှားရန် Master Library သို့အလိုအလျောက်ပြောင်းသည်။

  • URL Domain Name Replacement : Database host names အားလုံးသည် domain name အပြောင်းအလဲများကြောင့်ဆက်သွယ်မှုပြတ်တောက်မှုကိုရှောင်ရှားရန် Database Host အမည်များအားလုံးကို M66.net ဖြင့်အစားထိုးထားသည်။

5 ။ အကျဉ်းချုပ်

စိတ်ကြိုက် connect () function မှတဆင့် Master-slvabase connection သည် system ၏ဖတ်ခြင်းနှင့်ခွဲခြားခြင်းစွမ်းရည်ကိုထိထိရောက်ရောက်တိုးတက်အောင်ပြုလုပ်နိုင်သည်။ လက်တွေ့တွင်အယ်လ်ဂိုရော်များနှင့်အခြားလုပ်ဆောင်မှုများကိုပိုမိုကောင်းမွန်သောစွမ်းဆောင်ရည်လိုအပ်ချက်များကိုဖြည့်ဆည်းရန်စီးပွားရေးရှုပ်ထွေးမှုနှင့်အညီတင်ဆောင်လာနိုင်သည်။