လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP ကို ​​သုံး. RETIS မက်ဆေ့ခ်ျများကိုစဉ်ဆက်မပြတ်နားထောင်ရန်နှင့် PHP ကို ​​သုံး. Queue လုပ်ငန်းများကိုကိုင်တွယ်ပုံ?

PHP ကို ​​သုံး. RETIS မက်ဆေ့ခ်ျများကိုစဉ်ဆက်မပြတ်နားထောင်ရန်နှင့် PHP ကို ​​သုံး. Queue လုပ်ငန်းများကိုကိုင်တွယ်ပုံ?

gitbox 2025-06-13

Redis ဆိုတာဘာလဲ

Redis သည်စွမ်းဆောင်ရည်မြင့်မားသော open source in-memory data storage system ဖြစ်ပြီးဒေတာဘေ့စ်, cache နှင့် message monthware အဖြစ်အသုံးပြုနိုင်သည်။ Redis သည်ရိုးရာရင်းမြစ်ဒေတာဘေ့စ်များနှင့်နှိုင်းယှဉ်ပါက Redis သည်အချက်အလက်များကိုဖတ်ရှုခြင်းနှင့်ရေးခြင်းမြန်ခြင်း, Redis သည် Message Queue များကိုအကောင်အထည်ဖော်ရန် Publish / Subscribe Mode ကိုထောက်ပံ့သည်။

Redis ၏ Public / Subscribe Mode

Redis ၏ Publial / Subscribe Mode ကို Pub / Sub command မှတဆင့်အကောင်အထည်ဖော်သည်။ ဒီ mode မှာ:

  • ထုတ်ဝေသူသည်မက်ဆေ့ခ်ျကိုရုပ်သံလိုင်းသို့ထုတ်ဝေရန် Public Command ကိုအသုံးပြုသည်
  • စာရင်းပေးသွင်းသူများမှာ Subscribe command ကို သုံး. သတ်သတ်မှတ်မှတ်လိုင်းများကိုစာရင်းသွင်းပါ
  • ထုတ်ဝေသူသည်ရုပ်သံလိုင်းသို့စာတစ်စောင်ပို့သောအခါစာရင်းပေးသွင်းသူအားလုံးကမက်ဆေ့ခ်ျကိုလက်ခံရရှိလိမ့်မည်

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

PHP ကိုအသုံးပြုပြီး Redis Message QueueS ကိုစဉ်ဆက်မပြတ်နားထောင်ခြင်း

PHP ရဲ့ redis extension မှတဆင့် Redis ရဲ့ Message Queue ကိုကျွန်တော်တို့ကိုင်တွယ်နိုင်တယ်။ ဤ extension သည် Redis server နှင့်ဆက်သွယ်မှုကိုအထောက်အကူပြုပြီးလိုင်းများကိုရယူရန်ကူညီသည်။ Channel တွင်မက်ဆေ့ခ်ျအသစ်တစ်ခုရှိပါက PHP script သည်မက်ဆေ့ခ်ျကိုလက်ခံပြီး၎င်းကိုလုပ်ဆောင်သည်။

Redis ဆာဗာကိုဆက်သွယ်ပါ

Redis extension ကိုမသုံးမီပထမ ဦး ဆုံး extension ကို install လုပ်ရန်လိုအပ်သည်။ တပ်ဆင်မှုပြီးဆုံးသွားသောအခါကျွန်ုပ်တို့သည်အောက်ပါကုဒ်များမှတဆင့် Redis ဆာဗာကို ဆက်သွယ်. ဆက်သွယ်နိုင်သည်။

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

ဤတွင်ကျွန်ုပ်တို့သည် Redis ဥပမာအားဖြင့်ပြန်လည်ထူထောင်ရေး server သို့ဆက်သွယ်ပါ။ အကယ်. Redis Server သည်အခြားလိပ်စာတစ်ခုတွင်တည်ရှိပါက server ၏ IP address ကိုသတ်မှတ်ရန် `connect ()` နည်းလမ်း၏ parameters များကိုသင်ပြုပြင်နိုင်သည်။

Redis မက်ဆေ့ခ်ျကိုတန်းဆင်း subscribe

Redis ကိုဆက်သွယ်ပြီးနောက် `subscribe ()` `method ကိုသုံးပါ။ ဤနည်းလမ်းသည်ရုပ်သံလိုင်းအမည်ပါသော parameter သည်ခင်းကျင်းအဖြစ်ခင်းကျင်းသည်။ ဥပမာအားဖြင့်, ကျွန်ုပ်တို့သည် "Mychannel" ဟုခေါ်သောချန်နယ်ကိုစာရင်းသွင်းနိုင်သည်။

 
$redis->subscribe(['mychannel'], 'callback');
  

ဤကုဒ်တွင် "Mychannel" ဟုခေါ်သောချန်နယ်ကိုစာရင်းသွင်းပြီး callback function ကို `callback`` ကိုသတ်မှတ်ပါ။ Redis သည် Channel သို့စာတစ်စောင်ပို့သည့်အခါ PHP ပရိုဂရမ်သည်မက်ဆေ့ခ်ျကိုလုပ်ဆောင်ရန် PHP အစီအစဉ်သည် callback function ကိုအလိုအလျောက်လုပ်ဆောင်လိမ့်မည်။

ဖြစ်စဉ်ကိုစာရင်းဇယားမက်ဆေ့ခ်ျများ

မက်ဆေ့ခ်ျကိုလက်ခံရရှိပြီးနောက်ကျွန်ုပ်တို့သည် callback function တွင်အပြောင်းအလဲနဲ့ယုတ္တိဗေဒကိုရေးရန်လိုအပ်သည်။ မက်ဆေ့ခ်ျကိုလက်ခံရရှိသည့်အခါဤ callback function ကိုအစပျိုးပေးပြီး Redis မှပေးပို့သောချန်နယ်နှင့်မက်ဆေ့ခ်ျအကြောင်းအရာများကိုအလိုအလျောက်လက်ခံရရှိလိမ့်မည်။

 
function callback($redis, $channel, $message) {
  echo "Received message: $message\n";
}
  

In this example, the callback function will receive three parameters: `$redis` is the Redis instance, `$channel` is the channel name, and `$message` is the message content. မက်ဆေ့ခ်ျအသစ်တစ်ခုကိုလက်ခံရရှိသည့်အခါ function သည်မက်ဆေ့ခ်ျအကြောင်းအရာကိုထုတ်ပေးသည်။

နမူနာကုဒ်အပြည့်အစုံ

ဤတွင် PHP ကို ​​အသုံးပြု. RETIS မက်ဆေ့ခ်ျများကိုစဉ်ဆက်မပြတ်နားထောင်ရန်နှင့် PHP ကို ​​အသုံးပြု. တန်းစီလုပ်ငန်းများကိုမည်သို့ကိုင်တွယ်ရမည်ကိုပြသသည့်နမူနာအပြည့်အစုံကိုပြသသည်။

 
$redis = new Redis();
$redis->connect('localhost', 6379);
$redis->subscribe(['mychannel'], 'callback');

function callback($redis, $channel, $message) {
  $data = json_decode($message, true);
  processTask($data);
}

function processTask($data) {
  if ($data['task'] == 'send_email') {
    sendEmail($data['to'], $data['subject'], $data['content']);
  } elseif ($data['task'] == 'update_statistics') {
    updateStatistics();
  }
}

function sendEmail($to, $subject, $content) {
  // အီးမေးလ်ကုဒ်ပို့ပါ
}

function updateStatistics() {
  // စာရင်းအင်းကုဒ်နံပါတ်
}
  

ဤအပြည့်အဝဥပမာတွင် PHP ပရိုဂရမ်သည် "Mychannel" ဟုခေါ်သောချန်နယ်ကိုစာရင်းသွင်းပြီးအလုပ်အမျိုးအစားမက်ဆေ့ခ်ျကိုလက်ခံရရှိသည့်အခါသက်ဆိုင်ရာလုပ်ဆောင်မှုကိုခေါ်ဆိုသည်။ ဥပမာအားဖြင့်, အလုပ်က Send_email "ဖြစ်ပါက` SendEmail () "function ကိုမေးလ်ပို့ရန်ဖြစ်သည်။ အကယ်. အလုပ်က" Update_statical "()" function ကိုစာရင်းဇယားတွေကိုမွမ်းမံဖို့လို့ခေါ်တယ်။

အကျဉ်းချုပ်

PHP ကိုအသုံးပြုပြီး Redis ၏မက်ဆေ့ခ်ျစာရင်းပေးသွင်းချက်များကိုစဉ်ဆက်မပြတ်နားထောင်ခြင်းအားဖြင့်သင်သည် espychricianous tasks များကို allynchronous task များကို endealchronous task များကိုပြုပြင်ပြောင်းလဲနိုင်သည်။ လက်တွေ့ကျသောအပလီကေးရှင်းများ၌အချိန်ကုန်ခံခြင်းလုပ်ငန်းများကိုမက်ဆေ့ခ်ျများသို့ 0 င်ရောက်ခြင်းနှင့် PHP ကို ​​အသုံးပြု. PHP ကို ​​အသုံးပြု. PHP ကိုအသုံးပြုခြင်းနှင့်အသုံးပြုခြင်းအတွက်စနစ်များ 0 န်ဆောင်မှုကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ တစ်ချိန်တည်းမှာပင်ဤနည်းလမ်းသည်အချိန်နှင့်တပြေးညီတွန်းအားပေးခြင်းနှင့်အွန်လိုင်းစကားပြောခန်းများကဲ့သို့သောအချိန်မှန် application တစ်ခုအတွက်သင့်တော်သည်။