ယနေ့တွင် WeChat နှင့် QQ တို့ကဲ့သို့သောလူမှုရေးပလက်ဖောင်းများသည်လက်ငင်းစာတိုပေးပို့ရေးလုပ်ငန်းများကိုအထောက်အကူပြုသည်။ ဤဆောင်းပါးသည် PHP အခြေပြုတိုက်ရိုက်စကားပြောခွင့်စနစ်ကိုအသုံးပြုသူများအကြားအချိန်နှင့်တပြေးညီဆက်သွယ်မှုနှင့်မက်ဆေ့ခ်ျထုတ်လွှင့်မှုကိုနားလည်သဘောပေါက်စေနိုင်သည့် PHP-based live chat system ကိုမိတ်ဆက်ပေးသည်။ ဤစနစ်သည်စာမျက်နှာကို refresh လုပ်ရန်မလိုအပ်ပါ။ အသုံးပြုသူအတွေ့အကြုံကိုတိုးတက်စေရန်အတွက်အပိုဆောင်း client software ကိုအားမမူတည်ပါ။
Multi-user session စီမံခန့်ခွဲမှုသည်တိုက်ရိုက်စကားပြောစနစ်၏အဓိကအချက်ဖြစ်သည်။ System သည်ဆက်သွယ်မှုများကိုတည်ဆောက်ရန်နှင့် PHP ကိုဆာဗာဘက်ဘာသာစကားအဖြစ်အသုံးပြုသည်။ WebSident TCP protocol ကို အခြေခံ. ဖောက်သည်များနှင့်ဆာဗာများအကြားနှစ်လမ်းသွားဆက်သွယ်မှုကိုထောက်ခံသည်။
WebSound သည် TCP အခြေပြု duplex protocol တစ်ခုဖြစ်ပြီးဖောက်သည်များနှင့်ဆာဗာများကိုအချက်အလက်များကိုတစ်ပြိုင်နက်တည်းပေးပို့ခြင်းနှင့်လက်ခံခြင်းကိုခွင့်ပြုသည်။ ၎င်း၏အဓိကအင်္ဂါရပ်များမှာ -
0 န်ဆောင်မှုခံယူသူသည်အဆင့်မြှင့်တင်ရေးပရိုတိုကော၏တောင်းဆိုချက်ခေါင်းစဉ်အပါအ 0 င်ဝက်ဘ်ဆိုက်လက်ကိုင်တောင်းဆိုမှုကိုပထမဆုံးပို့သည်။ ဆာဗာသည်တောင်းဆိုမှုကိုလက်ခံရရှိပြီးနောက်ဆက်သွယ်မှုကိုတည်ဆောက်ရန်သက်ဆိုင်ရာအဆင့်မြှင့်တင်ရေးပရိုတိုကောပါသည့်တုန့်ပြန်မှုခေါင်းစဉ်ကိုပြန်လည်ပေးအပ်သည်။
// ဆာဗာဘေးထွက်တည်ထောင်ခြင်းWebSocketဆက်
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_listen($socket);
while (true) {
// 等待客户端ဆက်
$clientSocket = socket_accept($socket);
// Client Data ကိုလက်ခံရရှိသည်
$data = socket_read($clientSocket, 1024);
// တုံ့ပြန်မှုဒေတာပေးပို့ပါ
$response = "HTTP/1.1 101 Switching Protocols\r\n"
. "Upgrade: websocket\r\n"
. "Connection: Upgrade\r\n"
. "Sec-WebSocket-Accept: " . base64_encode(sha1($key . "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true)) . "\r\n\r\n";
socket_write($clientSocket, $response);
}
ဆက်သွယ်မှုကိုစတင်ပြီးပါက system သည် redis ကို backend အထောက်အပံ့များအဖြစ်အသုံးပြုသည်။ မက်ဆေ့ခ်ျများအားလုံးကိုစာတိုပေးပို့သူအားလုံးကိုအလျင်အမြန်တွန်းပို့နိုင်ရန်အတွက်အချိန်နှင့်တပြေးညီအသိပေးချက်ကိုသိရှိရသည်။
Redis သည် Strings, Lists, collection များ, collection များ, hash ဇယားများနှင့်အမှာစာများစသည့်အချက်အလက်အမျိုးမျိုးကို အခြေခံ. Open Source Key-value Database ဖြစ်သည်။ ၎င်းကို cache, cache, message queues များနှင့်အချိန်နှင့်တပြေးညီဒေတာလုပ်ဆောင်ခြင်းများတွင်ကျယ်ပြန့်စွာအသုံးပြုသည်။
ဤစနစ်တွင်အသုံးပြုသူများမှပေးပို့သော chat မက်ဆေ့ခ်ျများကို Redis မှတစ်ဆင့်တိကျသောရုပ်သံလိုင်းသို့ထုတ်ဝေသည်။ client များသို့စာရင်းသွင်းထားသော client များသည်လက်တွေ့ကျကျအကြောင်းကြားစာကိုနားလည်သဘောပေါက်ခြင်း,
// သတင်းအချက်အလက်ထုတ်ဝေသည်Redisရေမေြာင်း
$redis->publish('chat:message', json_encode($message));
// သတင်းစာမှာခြင်းRedisရေမေြာင်း,တကယ့်အချိန်အတွက်မက်ဆေ့ခ်ျကိုလက်ခံရရှိနှင့်အသုံးပြုသူများကိုအကြောင်းကြားပါ
$redis->subscribe(['chat:message'], function ($redis, $channel, $message) use ($server) {
foreach ($server->connections as $connection) {
$connection->send($message);
}
});
ဤဆောင်းပါးသည် PHP ကို အခြေခံ. PHP ကို အခြေခံ. PHP အပေါ် အခြေခံ. Real-time chat system ကို အခြေခံ. PHP ကို အခြေခံ. PHP ကို အခြေခံ. PHP ကို အခြေခံ. PHP ကို အခြေခံ. PHP အပေါ် အခြေခံ. PHP အပေါ်တွင်ဖော်ပြထားသည်။ ဤနည်းပညာများဖြင့်စနစ်သည်အချိန်နှင့်တပြေးညီတွေ့ဆုံဆွေးနွေးမှုစီမံခန့်ခွဲမှုနှင့်ချက်ချင်းမက်ဆေ့ခ်ျကိုတွန်းအားပေးနိုင်သည်။ ဤဖြေရှင်းချက်သည်ထိရောက်သောအချိန်နှင့်ဆက်သွယ်ရေးလုပ်ဆောင်မှုများကိုတည်ဆောက်ရန် developer များတည်ဆောက်ရန်အထောက်အကူဖြစ်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။