လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP Real-Time Message Message Push Pusfectation Case ၏အသေးစိတ်ရှင်းပြချက် (ကြာမြင့်စွာသာမန် 0 န်ရာဇ 0 ယ်ခြင်းအပေါ်အခြေခံသည်)

PHP Real-Time Message Message Push Pusfectation Case ၏အသေးစိတ်ရှင်းပြချက် (ကြာမြင့်စွာသာမန် 0 န်ရာဇ 0 ယ်ခြင်းအပေါ်အခြေခံသည်)

gitbox 2025-08-05

ဖြစ်ရပ်နောက်ခံ

Real-time messaging နည်းပညာသည်ဝက်ဘ်ဆိုက်များနှင့်အက်ပလီကေးရှင်းများကိုပိုမိုထိရောက်သောအသုံးပြုသူအပြန်အလှန်အတွေ့အကြုံရရှိရန်ကူညီနိုင်သည်။ ဥပမာအားဖြင့်အသုံးပြုသူများသည်အွန်လိုင်းဖောက်သည် 0 န်ဆောင်မှု, chat room or Time Real-time notification system ကိုအသုံးပြုသောအခါ၎င်းတို့သည်ဆာဗာမှမက်ဆေ့ခ်ျများကိုအမြန်ဆုံးလက်ခံရရှိရန်လိုအပ်သည်။ ကွန်ရက်စာမျက်နှာများသည်လက်ရှိအချိန်မှန်ဆက်သွယ်ရေးနည်းပညာသည်အဓိကအားဖြင့်အချိန်မှန်ဆက်သွယ်ရေးနည်းပညာဖြစ်သည်။

Real-Time Message Push ၏နိယာမ

မက်ဆေ့ခ်ျပို့ရန်သော့ချက်သည် client နှင့် server အကြားစဉ်ဆက်မပြတ်ဆက်သွယ်မှုကိုထိန်းသိမ်းရန်ဖြစ်သည်။ ရိုးရာ HTTP ဆက်သွယ်ရေးဆိုသည်မှာတစ်လမ်းတည်းတောင်းဆိုမှုတုန့်ပြန်မှုတစ်ခုဖြစ်သည်။

အချိန်ကြာမြင့်စွာစစ်တမ်းကောက်ယူ

ရှည်လျားသောစစ်တမ်းကောက်ယူမှု၏ဆက်သွယ်ရေးလုပ်ငန်းစဉ်ကိုအောက်ပါအဆင့်များခွဲခြားနိုင်သည်။

  • 0 န်ဆောင်မှုခံယူသူသည်ဆာဗာသို့တောင်းဆိုမှုတစ်ခုပို့သည်။
  • ဆာဗာသည်မက်ဆေ့ခ်ျအသစ်များရရှိနိုင်မည်ကိုဆုံးဖြတ်သည်။
  • မက်ဆေ့ခ်ျအသစ်တစ်ခုရှိပါကမက်ဆေ့ခ်ျကိုအချက်အလက်များကိုချက်ချင်းပြန်ပို့ပါ။
  • မက်ဆေ့ခ်ျမရှိပါကဆာဗာသည်ချိတ်ဆက်ထားပြီးမက်ဆေ့ခ်ျအသစ်တစ်ခုကိုထုတ်ပေးရန်စောင့်ဆိုင်းနေသည်။
  • အချိန်ကုန်ခြင်းသို့မဟုတ်မက်ဆေ့ခ်ျတစ်ခုကိုစောင့်ဆိုင်းပြီးနောက်ဆာဗာသည်တုန့်ပြန်မှုပြန်ပို့သည်။
  • တုန့်ပြန်မှုကိုလက်ခံရရှိပြီးနောက် 0 န်ဆောင်မှုခံယူသူသည်ချက်ချင်းတောင်းဆိုမှုကိုထပ်မံပေးပို့သည်,

စနစ်အကောင်အထည်ဖော်မှုအဆင့်များ

ဒေတာဘေ့စ်စားပွဲတစ်ခုဖန်တီးပါ

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

 
CREATE TABLE messages (
  id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  content VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Front-end စာမျက်နှာဖွံ့ဖြိုးတိုးတက်မှု

ရှေ့ပြေးစာမျက်နှာသည်တွန်းအားပေးသည့်အချိန်မှန်သတင်းများကိုပြသရန်အသုံးပြုသည်။

 
<!DOCTYPE html>
<html>
<head>
  <title>အချိန်နှင့်တပြေးညီသတင်းစကားကိုတွန်းပါ</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="app.js"></script>
</head>
<body>
  <div id="messages"></div>
</body>
</html>

အပြောင်းအလဲနဲ့ယုတ္တိဗေဒ backend

Backend PHP Code သည်အချိန်ကြာမြင့်စွာ 0 တ်ဆန်သည့်ယုတ္တိဗေဒနှင့်ဒေတာတုန့်ပြန်မှုကိုကိုင်တွယ်ရန်တာ 0 န်ရှိသည်။ ရှေ့တန်းမှစတင်သောတောင်းဆိုမှုများကိုကိုင်တွယ်ရန် Index.php အမည်ရှိဖိုင်ကိုကျွန်ုပ်တို့ဖန်တီးနိုင်သည်။

အခြေခံ PHP processing ဥပမာများ

 
<?php
// ဒေတာဘေ့စ်ဆက်သွယ်မှု
$conn = new mysqli("localhost", "အသုံးပြုသူ", "လှျို့ဝှက်စကား", "ဒေတာဘေ့စ်အမည်");
if ($conn->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $conn->connect_error);
}

// နောက်ဆုံးသောကာလကိုလက်ခံရရှိနောက်ဆုံးမက်ဆေ့ခ်ျကိုရယူပါID
$lastId = isset($_GET['last_id']) ? intval($_GET['last_id']) : 0;
$timeout = 30; // အများစုမှာစောင့်ပါ30စက်ဏန့်
$startTime = time();

while (true) {
    $sql = "SELECT * FROM messages WHERE id > $lastId ORDER BY id ASC";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $messages = [];
        while($row = $result->fetch_assoc()) {
            $messages[] = $row;
        }
        echo json_encode(["status" => "success", "data" => $messages]);
        break;
    } else {
        // အခြားတိုင်း1စက်ဏန့်检查一次是否有新消息,အလွန်အကျွံဆာဗာဖိအားကိုရှောင်ကြဉ်ပါ
        sleep(1);
    }

    if ((time() - $startTime) > $timeout) {
        echo json_encode(["status" => "timeout", "data" => []]);
        break;
    }
}
$conn->close();
?>

Front-end polling script (app.js)

 
let lastId = 0;
function fetchMessages() {
  $.ajax({
    url: 'index.php',
    type: 'GET',
    data: { last_id: lastId },
    success: function(response) {
      if (response.status === 'success') {
        response.data.forEach(function(msg) {
          $('#messages').append('<p>' + msg.content + '</p>');
          lastId = msg.id;
        });
      }
      fetchMessages();
    },
    error: function() {
      setTimeout(fetchMessages, 3000);
    }
  });
}

$(document).ready(function() {
  fetchMessages();
});

အကျဉ်းချုပ်

အထက်ပါနည်းလမ်းများမှတဆင့် PHP နှင့် Long Polling Technology ကို အသုံးပြု. အခြေခံအချိန်နှင့်တပြေးညီ Messaging System ကိုအောင်မြင်စွာတည်ဆောက်ခဲ့သည်။ ဤဖြေရှင်းချက်သည်ကောင်းမွန်သောသဟဇာတဖြစ်မှုနှင့်ဖွံ့ဖြိုးမှုနိမ့်ကျမှုတံခါးခုံများရှိသည်။ ၎င်းသည်အချိန်မှန်စွမ်းဆောင်ရည်နိမ့်သောစွမ်းဆောင်ရည်နည်းသော application scarios ကိုကျင့်သုံးရန်အတွက်လိုအပ်သောအရာတစ်ခုဖြစ်သည်။ သို့သော်အချိန်မီပြန်လည်တုံ့ပြန်ချက်လိုအပ်သည်။

ဆက်စပ်အကြောင်းအရာ
မကြာသေးမီ ဆောင်းပါးများ