လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP PHP သည် Redis Message Subscription နှင့် Message အမြောက်အများကိုထိရောက်စွာလုပ်ဆောင်ခြင်း

PHP PHP သည် Redis Message Subscription နှင့် Message အမြောက်အများကိုထိရောက်စွာလုပ်ဆောင်ခြင်း

M66 2025-07-17

PHP PHP ၏ PHP ၏ PHP ၏စဉ်ဆက်မပြတ် Monits Subscription ကိုစဉ်ဆက်မပြတ်စောင့်ကြည့်လေ့လာခြင်း

Redis သည်မှတ်ဥာဏ်အခြေပြုအဆင့်မြင့်သောစွမ်းဆောင်ရည် key-value တန်ဖိုးဒေတာဘေ့စ်ဖြစ်ပြီး, PHP Development တွင် Redis extensive ၏အကူအညီဖြင့်ကျွန်ုပ်တို့သည် Redis မက်ဆေ့ခ်ျများကိုစဉ်ဆက်မပြတ်နားထောင်ခြင်းကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။

Redis extension ကို install လုပ်ပါ

Redis function ကိုမသုံးမီ PHP ပတ်ဝန်းကျင်တွင် Redis extension ကိုသေချာအောင်လုပ်ပါ။ ၎င်းကို PECL မှတဆင့်အောက်ပါ command များဖြင့် install လုပ်နိုင်သည်။

 <span class="fun">PECL REDIS ကို install လုပ်ပါ</span>

တပ်ဆင်မှုပြီးဆုံးသွားသောအခါ၎င်းကို php.ini configuration file ထဲတွင်ထည့်ရန်လိုအပ်သည်။

 <span class="fun">extension = redis.so</span>

Configuration ကိုဖြည့်စွက်ပြီးပါက PHP 0 န်ဆောင်မှုကိုပြန်လည်စတင်ပါ။ ပုံမှန်အားဖြင့် redis extension ကိုသုံးပါ။

Redis မက်ဆေ့ခ်ျကို subscription နှင့်ဥပမာ processing

Redis သည်စာရင်းသွင်းခြင်းနှင့်ထုတ်ဝေခြင်းအတွက်စာရင်းသွင်းခြင်းနှင့်ထုတ်ဝေခြင်းအတွက် subscribe နှင့် publish လုပ်ပေးသည်။ PHP တွင် Subscribe Method ကိုခေါ်ဆိုခြင်းအားဖြင့်သတ်မှတ်ထားသော Channel မှမက်ဆေ့ခ်ျများကိုစဉ်ဆက်မပြတ်နားထောင်နိုင်သည်။

 <?php
$redis = new Redis();
$redis->connect('localhost', 6379);

$redis->subscribe(['channel'], function($redis, $channel, $message) {
    // လက်ခံရရှိမက်ဆေ့ခ်ျကိုထုတ်ယူခြင်း
    echo "Received message from channel {$channel}: {$message}\n";
});

အထက်ဖော်ပြပါကုဒ်များတွင် Redis ဥပမာအားဖြင့် Redis server ကိုဆက်သွယ်ပါ။ Redis server သို့ဆက်သွယ်ပါ။ Collback function တွင်လက်ခံရရှိသည့် Channel ကိုစာရင်းသွင်းပါ။

Multi-process တစ်ပြိုင်နက်တည်းမက်ဆေ့ခ်ျများအရေအတွက်

Single-process subscription model သည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းကအကဲဖြတ်ရန်လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးနိုင်မည်မဟုတ်ပါ။ Multi-process နည်းပညာကိုအသုံးပြုခြင်းအားဖြင့်စားသုံးသူလုပ်ငန်းစဉ်များကိုစတင်နိုင်ပြီးမက်ဆေ့ခ်ျများကိုတစ်ချိန်တည်းတွင်ပြုလုပ်နိုင်ပြီးစနစ်ကိုတိုးတက်အောင်ပြုလုပ်နိုင်သည်။

 <?php
$redis = new Redis();
$redis->connect('localhost', 6379);

// ဖန်တီးထားသောဖြစ်စဉ်များအရေအတွက်,ဝယ်လိုအားအရသိရသည်ညှိ
$numWorkers = 4;

for ($i = 0; $i < $numWorkers; $i++) {
    $pid = pcntl_fork();
    if ($pid == -1) {
        die("Could not fork");
    } elseif ($pid) {
        // မိဘလုပ်ငန်းစဉ်,နောက်ကလေးဖြစ်စဉ်ကိုဆက်လက်ဖန်တီးပါ
        continue;
    } else {
        // လက်အောက်ခံ,subscription နှင့် message processing ယုတ္တိဗေဒ Execover လုပ်ပါ
        $redis->subscribe(['channel'], function($redis, $channel, $message) {
            // လက်ခံရရှိမက်ဆေ့ခ်ျကိုထုတ်ယူခြင်း
            echo "Received message from channel {$channel}: {$message}\n";
        });
        break;
    }
}

// 等待လက်အောက်ခံ退出
while (pcntl_waitpid(0, $status) != -1) {}

Code တွင် PCNTL_Fork () ကို အသုံးပြု. subprocesses မျိုးစုံကိုဖန်တီးသည်။ မိဘလုပ်ငန်းစဉ်သည်ကလေးဖြစ်စဉ်ကိုဖန်တီးရန်နှင့်အဆုံးသတ်ရန်စောင့်ဆိုင်းရန်တာ 0 န်ရှိသည်။

မှတ်သားရန်အရာ

Redis extension သည်ပိတ်ဆို့ခြင်းမဟုတ်သော IO ကိုလက်ခံသည်ကတည်းကမျိုးနွယ်စုများသည်လူမျိုးရေးအခြေအနေများကိုဖြစ်ပေါ်စေနိုင်သဖြင့်,

အကျဉ်းချုပ်

ဤဆောင်းပါးသည် PHP တွင် Redis ဖြင့်သက်တမ်းတိုးခြင်းဖြင့် Redis Message Subscriptions ကိုစဉ်ဆက်မပြတ်နားထောင်ရန်နှင့်မိတ်ဆက်မှုအမျိုးမျိုးကိုတစ်ပြိုင်နက်တည်းရေးဆွဲရန် Multi-process နည်းပညာကိုအသုံးပြုသည်။ ဤဖြေရှင်းချက်သည်အတိုချုပ်နှင့်လက်တွေ့ကျရုံသာမကလက်တွေ့ကျသောစွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်လာသည်။