လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဒေတာဘေ့စ်ဒီဇိုင်းနှင့် Real-time chat function ကိုပိုမိုကောင်းမွန်စေရန် PHP ကိုမည်သို့အသုံးပြုရမည်နည်း

ဒေတာဘေ့စ်ဒီဇိုင်းနှင့် Real-time chat function ကိုပိုမိုကောင်းမွန်စေရန် PHP ကိုမည်သို့အသုံးပြုရမည်နည်း

gitbox 2025-06-17

1 ။ နိဒါန်း

Real-time chat function သည် WeChat, Facebook, WhatsApp စသည့်စသည့်ခေတ်သစ်လူမှုရေးပလက်ဖောင်းများတွင်အလွန်ရေပန်းစားသည်။ ဤလုပ်ဆောင်မှုကိုအကောင်အထည်ဖော်ခြင်းကရှေ့တန်းဖွံ့ဖြိုးမှုအပေါ်တွင်မူတည်သည်သာမကခိုင်မာသည့်အဆုံးအထောက်အပံ့လည်းလိုအပ်သည်။ ဤဆောင်းပါးသည်ဒေတာဘေ့စ်ဒီဇိုင်းနှင့်အကောင်းမြင်မှုရှုထောင့်မှအချိန်မှန် chat function များကိုအကောင်အထည်ဖော်ရန် PHP ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

2 ။ ဒေတာဘေ့စဒီဇိုင်း

2.1 ဒေတာဘေ့စ်ဖွဲ့စည်းပုံ

Live Chat System သည် Chat Records အမြောက်အများကိုသိမ်းဆည်းရန်လိုအပ်သည်, မှတ်တမ်းတစ်ခုစီသည်အောက်ပါအချက်အလက်များပါ 0 င်သည်။

  • ပေးပို့သူ ID
  • လက်ခံသူ ID
  • မက်ဆေ့ခ်ျအကြောင်းအရာ
  • အချစ်

ဤ Chat Records များကိုသိမ်းဆည်းရန် MySQL ဒေတာဘေ့စ်ကို သုံး. အထူးစားပွဲ၌သက်ဆိုင်ရာအချက်အလက်များကိုသိမ်းဆည်းရန်သင်အသုံးပြုနိုင်သည်။

    Table `chat_messages` ကိုဖန်တီးပါ (
        `ID's Int (11) Null Auto_increment မဟုတ်ပါ။
        `sender_id` int (11) null မဟုတ်,
        `receiver_id` int (11) NULL မဟုတ်ပါ။
        `စာမိတ္တူမဟုတ်ပါ NURL မဟုတ်ပါ,
        `Timestamp` Timestamp သည် NULL ပုံမှန် current_timestamp မဟုတ်ပါ,
        အဓိက key (`ID`)
    );
    

ဤ SQL Code သည် chat_messages` ဟုခေါ်သောဇယားတစ်ခုဖြစ်ပြီး Chat History ကိုသိုလှောင်ရန်လိုအပ်သောကွက်လပ်များပါ 0 င်သည်။

2.2 အညွှန်းကိန်း optimization

Indexing သည်ဒေတာဘေ့စ်စုံစမ်းမှုစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အတွက်သော့ချက်ဖြစ်သည်။ Chat Record Table တွင်ပေးပို့သူ ID နှင့်လက်ခံ ID အပေါ် အခြေခံ. chat changes များကိုရှာဖွေရန်လိုအပ်သည်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည်ဤနယ်ပယ်နှစ်ခုအတွက်ပူးတွဲညွှန်းကိန်းတစ်ခုဖန်တီးနိုင်သည်။

    chat_messages (Sender_id, receliver_id) အတွက် Index Sender_Receiver_index ကိုဖန်တီးပါ။
    

အထက်ဖော်ပြပါကုဒ်သည် Sender ID နှင့်လက်ခံသူ ID ကိုပေါင်းစပ်ထားသောအညွှန်းတစ်ခုဖန်တီးပေးသည့်အညွှန်းတစ်ခုဖန်တီးပေးသည်။

3 ။ Database optimization

3.1 cache optimization

ဒေတာဘေ့စ်စုံစမ်းမှုထိရောက်မှုကိုတိုးတက်စေရန်အတွက်သိုလှောင်နည်းပညာကိုအသုံးပြုနိုင်သည်။ စုံစမ်းမှုအားဖြင့်မှတ်ဥာဏ်ကိုမှတ်ဉာဏ်အဖြစ်သိမ်းဆည်းခြင်းအားဖြင့်မကြာခဏ database access ကိုရှောင်ရှားနိုင်ပြီးစနစ်စွမ်းဆောင်ရည်တိုးတက်လာသည်။

    // ဆက်သွယ်မှုဒေတာဘေ့စ်ကုဒ်သည် $ cache ကိုချန်လှပ်ထားခြင်း = Memcached (),
    $ cache-> addserver ('localhost', 11211);

    function get_chat_messages ($ sender_id, $ receiver_id) {
        Global $ DB, $ cache;
        
        $ cache_key = "chat_messages {{$ sender_id} {$ receiver_id};
        $ ရလဒ် = $ cache-> get ($ cache_key);
        
        လျှင် ($ ရလဒ် === fiss) {
            SQL = "chat_id = {$ sender_id} နှင့် receiver_id = {$ receiver_id}";
            $ ရလဒ် = $ dB-> Query ($ SQL);
            $ cache-> set ($ cache_key, $ ရလဒ်, 60);
        }
        
        $ $ ရလဒ်ပြန်လာ;
    }
    

ဤကုဒ်သည်စုံစမ်းမှုသည်ရှာဖွေမှုများမှတဆင့်ရလဒ်များကိုသိုလှောင်ထားသည်။ cache တွင်မှတ်တမ်းမရှိပါကအချက်အလက်များကိုဒေတာဘေ့စ်မှမေးမြန်းခြင်းနှင့်ရလဒ်များကိုသိမ်းဆည်းထားပါသည်။ ထိုသို့ပြုလုပ်ခြင်းသည်ဒေတာဘေ့စ်၏စုံစမ်းမှုဝန်ကိုသိသိသာသာလျော့နည်းစေသည်။

3.2 partition ကို optimization

Chat History ကြီးထွားလာသည်နှင့်အမျှဒေတာဘေ့စ်၏စုံစမ်းမှု၏လုပ်ဆောင်မှုကိုထိခိုက်နိုင်သည်။ စုံစမ်းမှုထိရောက်မှုကိုပိုမိုတိုးတက်စေရန် Database Partitions များကိုအသုံးပြုနိုင်သည်။ အချက်အလက်များကိုအချိန်အားဖြင့်ခွဲထုတ်ခြင်းအားဖြင့်အချက်အလက်အနည်းငယ်မျှသာလုပ်ဆောင်ရန်အချက်အလက်များကိုရှာဖွေရန်, စွမ်းဆောင်ရည်တိုးတက်အောင်ပြုလုပ်နိုင်သည်။

    Table `chat_messages` ကိုဖန်တီးပါ (
        `ID's Int (11) Null Auto_increment မဟုတ်ပါ။
        `sender_id` int (11) null မဟုတ်,
        `receiver_id` int (11) NULL မဟုတ်ပါ။
        `စာမိတ္တူမဟုတ်ပါ NURL မဟုတ်ပါ,
        `Timestamp` Timestamp သည် NULL ပုံမှန် current_timestamp မဟုတ်ပါ,
        အဓိက key (`ID`)
    Range (လ (timestamp) အားဖြင့်အခန်းကန့်) (
        Partition P1 တန်ဖိုးများ (2) ထက်နည်းသော,
        Partition P2 တန်ဖိုးများ (3) ထက်နည်းသော,
        partitional p3 တန်ဖိုးများ (4) ထက်နည်းသော,
        Partition P4 တန်ဖိုးများ (5) ထက်နည်းသော,
        Partition P5 Maxvalue ထက်နည်းသည်
    );
    

အထက်ပါကုဒ်သည်ဥပမာအားဖြင့်တစ်လဆင်ထားသောအခန်းကန့်များကိုအခန်းကန့်များကိုဖန်တီးပေးသောအခန်းကန့်ဇယားကိုဖန်တီးပေးသည်။ ဤသည်အထူးသဖြင့်ဒေတာ volume အလွန်ကြီးမားသည့်အခါ,

4 ။ နိဂုံးချုပ်

ဤဆောင်းပါးသည် PHP ကိုအချိန်နှင့်တပြေးညီစကားပြောခြင်းလုပ်ဆောင်မှုများကိုအသုံးပြုသောအခါဒေတာဘေ့စ်များကိုမည်သို့ဒီဇိုင်းဆွဲရမည်ကိုမိတ်ဆက်ပေးသည်။ ကျွန်ုပ်တို့သည် Chat Record Table ၏ဖွဲ့စည်းပုံကိုဒီဇိုင်းဆွဲပြီးအညွှန်းကိန်းနှင့် cache ကိုဤ အခြေခံ. အကောင်းဆုံးဖြစ်သည်။ ထို့နောက်ကျွန်ုပ်တို့သည် Partitioned စားပွဲများမှစုံစမ်းမှုထိရောက်မှုကိုမည်သို့တိုးတက်အောင်လုပ်ရမည်ကိုမိတ်ဆက်ပေးသည်။ Real-time chat function ကိုထိရောက်စွာအကောင်အထည်ဖော်မှုသည်ဒေတာဘေ့စ်၏အကောင်းမြင်မှ ခွဲ. မရပါ။