လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဆာဗာဘေးထွက်တွန်းအားပေးခြင်းနှင့်အချိန်မှန်ဆက်သွယ်မှုကိုအကောင်အထည်ဖော်ရန် PHP ကိုမည်သို့အသုံးပြုရမည်နည်း (SSE နည်းပညာသင်ခန်းစာ)

ဆာဗာဘေးထွက်တွန်းအားပေးခြင်းနှင့်အချိန်မှန်ဆက်သွယ်မှုကိုအကောင်အထည်ဖော်ရန် PHP ကိုမည်သို့အသုံးပြုရမည်နည်း (SSE နည်းပညာသင်ခန်းစာ)

M66 2025-07-08

PHP ကိုအသုံးပြုနည်း

နည်းပညာအလျင်အမြန်ဖွံ့ဖြိုးတိုးတက်မှုနှင့်အင်တာနက်အပလီကေးရှင်းများလူကြိုက်များမှုဖြင့်အချိန်မှန်ဆက်သွယ်မှုသည်တဖြည်းဖြည်းဆက်သွယ်မှုသည် web application များ၏အရေးပါသောအစိတ်အပိုင်းတစ်ခုဖြစ်လာသည်။ ဆာဗာဘေးထွက် Push နည်းပညာသည် developer များကို client မှတက်ကြွစွာတောင်းဆိုမှုများမလိုအပ်ဘဲ client ကို client သို့တိုက်ရိုက်ပေးပို့ရန်ခွင့်ပြုသည်။ ဆာဗာများနှင့်ဖောက်သည်များအကြားအချိန်နှင့်တပြေးညီအပြန်အလှန်ဆက်သွယ်မှုမှတစ်ဆင့်သုံးစွဲသူအတွေ့အကြုံနှင့်လျှောက်လွှာစွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်နိုင်သည်။

PHP တွင်ကျွန်ုပ်တို့သည် server-side push နှင့်အချိန်မှန်ဆက်သွယ်ရေးနှင့်ဆာဗာများပို့ခြင်းနှင့်ဆာဗာများ - ပို့ဆောင်ရေးဖြစ်ရပ်များ (SSE) ကဲ့သို့သော server-time completication ကိုနားလည်ရန်နည်းပညာအမျိုးမျိုးကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ ဤဆောင်းပါးသည်ဤအင်္ဂါရပ်ကို server-sents sent ်ဌာန်းမည့်ဖြစ်ရပ်များ (SSE) မှတစ်ဆင့်မည်သို့အကောင်အထည်ဖော်ရမည်ကိုအာရုံစိုက်မည်။

ဆာဗာ - ပို့ဆောင်မည့်အဖြစ်အပျက်များ (SSE) ဆိုတာဘာလဲ

ဆာဗာ - ပို့ဆောင်ရေးဖြစ်ရပ်များ (SSE) သည်ဆာဗာတစ်ခုမှ client တစ်ခုသို့အချက်အလက်များကိုတွန်းအားပေးသော HTTP protocol-based နည်းပညာဖြစ်သည်။ Websocket နှင့်မတူဘဲ SSE သည်ဆာဗာမှ client သို့ဒေတာစီးဆင်းမှုကိုတွန်းပို့ပေးသည့်တစ်လမ်းတည်းဆက်သွယ်ရေးနည်းလမ်းဖြစ်သည်။ ဤနည်းပညာသည်အချိန်နှင့်တပြေးညီအသိပေးချက်များ, တိုက်ရိုက်ထုတ်လွှင့်မှုအသစ်ပြောင်းခြင်းများ, တက်ကြွသောဒေတာပြသမှုနှင့်အခြားအခြေအနေများအတွက်အလွန်သင့်တော်သည်။

PHP တွင် SSE PUSS ကိုအကောင်အထည်ဖော်ပါ

ပထမ ဦး စွာ PHP တွင် SSE Push 0 န်ဆောင်မှုတစ်ခုတည်ဆောက်ရန်လိုအပ်သည်။ PHP Code ဥပမာတစ်ခု

 <?php
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
header("Connection: keep-alive");

// client cycle သို့ဒေတာကိုတွန်းပါ
while (true) {
    // ဒေတာဘေ့စ်သို့မဟုတ်အခြားဒေတာအရင်းအမြစ်မှအချက်အလက်များကိုရယူပါ
    $data = getData();

    // client ကိုမှဒေတာပေးပို့ပါ
    echo "data: " . json_encode($data) . "\n\n";
    ob_flush();
    flush();

    // ဒေတာတွန်းအားပေးရဲ့အမြန်နှုန်းကိုထိန်းချုပ်ပါ
    sleep(1);
}

// ဒေတာကိုဘယ်လိုရနိုင်မလဲ
function getData() {
    // ဤနေရာတွင်သင်သည်ဒေတာဘေ့စ်သို့မဟုတ်အခြားဒေတာအရင်းအမြစ်များကိုစီးပွားရေးလုပ်ငန်းများနှင့်အညီမေးမြန်းနိုင်သည်
    $data = array(
        'message' => 'Hello, SSE!',
        'time' => time()
    );
    return $data;
}
?>

အထက်ဖော်ပြပါကုဒ်များတွင် SSE Data Stream ကို HTTP header ကိုသတ်မှတ်ခြင်းဖြင့်ပြန်လာသော browser ကိုကျွန်ုပ်တို့ပထမဆုံးအကြိမ်ပြောပြသည်။ ထိုအခါအဆုံးမဲ့ကွင်းဆက်တွင်ဒေတာများကိုဒေတာအရင်းအမြစ် (ဥပမာဒေတာဘေ့စ်ကဲ့သို့သောဒေတာဘေ့စ်ကဲ့သို့သော) မှရရှိသည်။ ဒေတာတစ်ခုစီကိုပို့ပြီးနောက် `ob_flush ()` `flush ()` flush ဟုခေါ်သည်။ `အိပ်စက်ခြင်း ()` function ကိုမှတဆင့်ဒေတာတွန်းအားပေး၏ကြိမ်နှုန်းကိုထိန်းချုပ်ပါ။

လိုင်းဒေတာကိုလက်ခံရရှိသည်

ဆာဗာမှတွန်းအားပေးသည့်အချက်အလက်များကိုလက်ခံရန် 0 န်ဆောင်မှုခံယူသူသည်ဆာဗာနှင့်ဆက်သွယ်မှုတစ်ခုတည်ဆောက်ရန် JavaScript ရှိ JavaSource` အရာဝတ်ထုကိုအသုံးပြုရန်လိုအပ်သည်။ ဤတွင်ရိုးရှင်းသော HTML နှင့် JavaScript ကုဒ်ဥပမာတစ်ခုဖြစ်သည်။

 <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>SSE Demo</title>
</head>
<body>
    <div id="message"></div>
    <script>
        var eventSource = new EventSource("push.php");

        eventSource.onmessage = function(event) {
            var data = JSON.parse(event.data);
            document.getElementById("message").innerHTML = data.message;
        };
    </script>
</body>
</html>

ဤ 0 န်ဆောင်မှုခံယူသူတွင်ကျွန်ုပ်တို့သည် `Elentsource` object တစ်ခုကိုဖန်တီးပြီးဆာဗာမှအချက်အလက်များကိုရယူရန် URL ကိုသတ်မှတ်ပါ (ဤတွင်` push.php) ဆာဗာသည်ဒေတာအသစ်များတွန်းအားပေးသည့်အခါ `onmessage` အဖြစ်အပျက်ကိုအလုပ်ဖြုတ်ခံရပြီး 0 က်ဘ်စာမျက်နှာပေါ်တွင် 0 က်ဘ်စာမျက်နှာပေါ်တွင်ခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။

အကျဉ်းချုပ်

ဤဆောင်းပါးကိုမိတ်ဆက်ပေးခြင်းဖြင့် PHP ကို ​​Side Push နှင့် Real-time ဆက်သွယ်ရေးကိုအကောင်အထည်ဖော်ရန်မည်သို့အသုံးပြုရမည်ကိုလေ့လာခဲ့သည်။ ဆာဗာ - ပို့ဆောင်မည့်ဖြစ်ရပ်များ (SSE) နည်းပညာနှင့်အတူကျွန်ုပ်တို့သည်အချိန်နှင့်တပြေးညီမွမ်းမံထားသောဒေတာများကို client အသစ်များနှင့်မလိုအပ်ပါ။ အချိန်နှင့်တပြေးညီဒေတာများကိုတွန်းအားပေးရန်အတွက်ရိုးရိုးရှင်းရှင်းနှင့်ထိရောက်သောဖြေရှင်းချက်တစ်ခုပေးထားသည်။

ဤနည်းပညာကိုအသုံးပြုခြင်းသည် web applications များ၏အချိန်နှင့်တပြေးညီအပြန်အလှန်ဆက်သွယ်မှုကိုတိုးတက်စေရုံသာမကဆာဗာတွင် 0 န်ထုပ်ဝန်ပိုးကိုထိထိရောက်ရောက်လျှော့ချနိုင်ပြီး, အချိန်နှင့်တပြေးညီမွမ်းမံမှုများလိုအပ်သည့်အခြေအနေအမျိုးမျိုးအတွက်သင့်တော်သည်။ PHP Real-time community ကိုနားလည်သဘောပေါက်ခြင်းအတွက်ဤဆောင်းပါးသည်သင့်အတွက်အထောက်အကူဖြစ်လိမ့်မည်ဟုမျှော်လင့်ပါ။