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