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

PHP တွင်ဆာဗာတွန်းအားပေးမှုကိုမည်သို့အကောင်အထည်ဖော်ရမည်။ Websocket နှင့် SSE နည်းပညာနှိုင်းယှဉ်မှု

M66 2025-06-18

PHP backend function ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဆာဗာ Push ပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်နည်း။

ဆာဗာတွန်းအားသည်နောက်ပိုင်းတွင်ဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်းအဆုံးဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်းအထူးသဖြင့်အသုံးချမှုများပြုလုပ်နေစဉ်အထူးသဖြင့်လျှောက်လွှာများသည်ဖောက်သည်များအားအချက်အလက်များကိုအချိန်မှန်ပေးရန်လိုအပ်သည်။ PHP သည် Technologies Technologies မှတစ်ဆင့် server ကိုတွန်းအားပေးနိုင်သည်။ ဝက်ဘ်ဆိုက်နှင့် server-server-server-sents-sents) ။ ဤနည်းပညာနှစ်ခုသည်၎င်းတို့၏ကိုယ်ပိုင်အားသာချက်များနှင့်အားနည်းချက်များရှိသည်။ မှန်ကန်သောနည်းပညာကိုရွေးချယ်ခြင်းသည်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်ပြ problems နာများကိုဖြေရှင်းနိုင်သည်။

ဝက်ကေြာင်း

WebSident အပြည့်အဝ duplex protocol တစ်ခုဖြစ်ပြီး 0 န်ဆောင်မှုခံယူသူနှင့်ဆာဗာအကြားဆက်နွယ်မှုကိုမြဲမြံစွာဆက်နွယ်မှုရှိစေပြီး Two-Work data ထုတ်လွှင့်မှုကိုအစစ်အမှန်အချိန်မှန်ဖြင့်ပြုလုပ်နိုင်သည်။ PHP တွင်ကျွန်ုပ်တို့သည် SWOOLE extensions ကို websocket တစ်ခုအကောင်အထည်ဖော်ရန်အသုံးပြုနိုင်သည်။

ပထမ ဦး စွာ SWOOLE extension ကို install လုပ်ထားကြောင်းသေချာပါစေ, အောက်ပါ command မှတဆင့် install လုပ်နိုင်သည်ကိုသေချာအောင်လုပ်ပါ။

PECL SWOOLE ကို install လုပ်ပါ

ထို့နောက် PHP ရှိ websocket server တစ်ခုကိုဖန်တီးပါ။ အောက်ပါကုဒ်ကိုသင်ရည်ညွှန်းနိုင်သည်။

$ server = swoolewebsocketserver ("0.0.0.0", 9501;

$ ဆာဗာ -> On ("Open", function ကို (SWOOLEEWebSTERERVERER $ ဆာဗာ, $ တောင်းဆိုမှု)
    ပဲ့တင်သံ "ချိတ်ဆက်";
});

$ ဆာဗာ -> On ("Message", function ကို (SWOOLEEWESTERERVERSERVERS $ server, $ frame) {
    ECHO "လက်ခံရရှိသည့်မက်ဆေ့ခ်ျ: {$ frame-> အချက်အလက်}};
    // push ယုတ္တိယပ် $ ဆာဗာ -> Push ($ frame-> fd, "ဆာဗာမက်ဆေ့ခ်ျ");
});

$ ဆာဗာ -> On (Close), function (swoolewebsocketserver $ ဆာဗာ, $ FD)
    echo "အဆက်ပြတ်";
});

$ ဆာဗာ -> စတင် ();

ဤကုဒ်သည်ဖြစ်ရပ်ပြန်ခေါ်ချက်သုံးခုကိုဖွင့်ထားသည့် Wearn, Message နှင့် Close ကိုသတ်မှတ်ပေးသော websocket server ကိုဖန်တီးသည်။ မက်ဆေ့ခ်ျဖြစ်ရပ်ပြန်ကြားချက်တွင်ဆာဗာသည်လက်ခံရရှိသည့်သတင်းစကားကို အခြေခံ. ဒေတာများကိုလုပ်ဆောင်နိုင်ပြီးတွန်းအားပေးနိုင်သည်။

ဆာဗာ - ပို့ဆောင်ရေးဖြစ်ရပ်များ (SSE)

ဆာဗာ - ပို့ဆောင်ရေးဖြစ်ရပ်များ (SSE) သည်တစ်လမ်းတည်းဆက်သွယ်ရေးပရိုတိုကောဖြစ်ပြီးဆာဗာကို client ကို data flow ကိုတွန်းအားပေးရန်ခွင့်ပြုသည့်တစ်လမ်းတည်းဆက်သွယ်ရေးပရိုတိုကောဖြစ်သည်။ SSE ကိုအသုံးပြုသောအခါ client သည်ဆာဗာမှမက်ဆေ့ခ်ျများကိုသာလက်ခံရရှိနိုင်ပြီးဆာဗာသို့ဒေတာများကိုတက်ကြွစွာမပို့နိုင်ပါ။

ဤတွင် SSE ၏ဥပမာအားဖြင့်ဥပမာတစ်ခုဖြစ်ပါတယ်။

header ("အကြောင်းအရာအမျိုးအစား: စာသား / အဖြစ်အပျက် -Ream");
header ("cache control: no-cache");
Header ("ဆက်သွယ်မှု - ဆက်ရှင်သန်နေ");

$ ရေတွက် = 0;

နေစဉ် (စစ်မှန်တဲ့) {
    ECHO "ဒေတာ: {$ count} \ n \ n";
    flush ();
    // push ယုတ္တိယပ် $ count ++;
    အိပ် (1),
}

အထက်ပါကုဒ်သည်တုန့်ပြန်မှုခေါင်းစဉ်သတင်းအချက်အလက်ကိုသတ်မှတ်ပြီးအချက်အလက်များကိုပုံမှန်အားဖြင့်အချက်အလက်များကိုတွန်းအားပေးရန်အတွက်အဆုံးမဲ့ကွင်းဆက်ကိုအသုံးပြုသည်။ နှောင့်နှေးချိန်ညှိခြင်းအားဖြင့်သင်သည်တွန်းအားပေးကြိမ်နှုန်းကိုသင်ထိန်းချုပ်နိုင်သည်။

အကျဉ်းချုပ်

websocket သို့မဟုတ် SSE အသုံးပြုခြင်းသည် PHP သည်ဆာဗာတွန်းအားပေးလုပ်ငန်းများကိုအကောင်အထည်ဖော်နိုင်သည်။ ဗဟုသုတသည်အချိန်တိုတောင်းသောအချိန်နှင့်ဆက်သွယ်ရေးအတွက်သင့်တော်သည်။ developer များသည်တိကျသောလိုအပ်ချက်များအပေါ် အခြေခံ. သင့်လျော်သောနည်းပညာများကိုရွေးချယ်ပြီးအမှန်တကယ်အခြေအနေများအပေါ် အခြေခံ. Push Logic ရေးရန်ရေးနိုင်သည်။