PHP PHP ကွန်ယက်အက်ပလီကေးရှင်းများဖွင့်လှစ်သည့်အခါကွန်ယက်ဆက်သွယ်ရေး protocols များ၏ထောက်ခံမှုနှင့်စွမ်းဆောင်ရည်သည်အရေးပါသည်။ အထူးသဖြင့်အဆင့်နိမ့် socket programming သို့မဟုတ်တိုးချဲ့လုပ်ဆောင်ချက်များကိုအသုံးပြုသောအခါ socket_wsaprotocol_info_Info_Info_import ကဲ့သို့သောတိကျသော interfaction သို့မဟုတ် functions များ၏စွမ်းဆောင်ရည်သည်ကွဲပြားခြားနားသော operating system နှင့်ပတ်ဝန်းကျင်ကြောင့်ကွဲပြားသည်။ ဤဆောင်းပါးသည် socket_wsaprotocol_Info_import ၏စွမ်းဆောင်ရည်ကို Cross-plat PHP ကွန်ယက်အက်ပလီကေးရှင်းများဖြင့်အာရုံစိုက်ပြီးကွဲပြားခြားနားမှုများနှင့်တုန့်ပြန်မှုဖြေရှင်းနည်းများကိုဆွေးနွေးပါမည်။
Socket_wsaprotocol_Info_import သည် PHP core function မဟုတ်သော်လည်း Windows ပလက်ဖောင်းအောက်ရှိ Windows Sockets (Winsock) API ၏အစိတ်အပိုင်းဖြစ်သည်။ ၎င်းသည်မတူညီသောဖြစ်စဉ်များအကြား wsaprotocol_info ဖွဲ့စည်းပုံကိုမတူညီသောဖြစ်စဉ်များအကြားဖွဲ့စည်းပုံကိုတင်သွင်းရန်အသုံးပြုသည်။ ၎င်းသည်ထပ်ခါတလဲလဲ connection coverion ကိုရှောင်ရှားနိုင်ပြီးစွမ်းဆောင်ရည်မြင့်မားသောဆာဗာများသို့မဟုတ် Multi-provide ဗိသုကာများတွင်စွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
ရိုးရိုးရှင်းရှင်းပြောရလျှင်၎င်းသည်လုပ်ငန်းစဉ်တစ်ခုကိုအခြားလုပ်ငန်းစဉ်တစ်ခုတွင်တည်ဆောက်ထားသော socket connection များကို "လွှဲပြောင်းယူ" ရန်ခွင့်ပြုပြီးလက်ဝါးကပ်တိုင်လုပ်ငန်းစဉ်ခွဲဝေမှုကိုရရှိရန်ခွင့်ပြုသည်။
Windows ပလက်ဖောင်း - Socket_wsaprotocol_Info_import သည် Winsock API နှင့်သက်ဆိုင်သည်။ ဤလုပ်ဆောင်ချက်သည် Windows အောက်ရှိ PHP extension များ (ဥပမာ - Winsock Extensions သို့မဟုတ် Custom C extensions) ဖြင့်သာခေါ်ဆိုနိုင်သည်။
Linux / Macos : ဤစနစ်နှစ်ခုသည် posix Socket Interface ကို အသုံးပြု. Socket_wsaprotocol_Info_import နှင့်တိုက်ရိုက်မကိုက်ညီပါ။
Linux / MACOS ကဲ့သို့သော Unix စနစ်များတွင်ဖြစ်စဉ်များကိုဖြတ်သန်းသွားသော societ socket handles များကိုပုံမှန်အားဖြင့် socium dom socket ( Sendmmsg ၏ Sismmmsg ၏ပံ့ပိုးမှုအချက်အလက်များ) ကို passing လုပ်လေ့ရှိသည်။ PHP ကိုယ်တိုင်ကတိုက်ရိုက်ထောက်ခံမှုမပေးနိုင်ပါ။ များသောအားဖြင့်နောက်ခံစနစ်တိုးချဲ့ခြင်းသို့မဟုတ်အထူးပြုစာကြည့်တိုက်များအသုံးပြုခြင်းကိုခေါ်ဆိုရန်လိုအပ်သည်။
PHP ၏ကိုယ်ပိုင်စံစာကြည့်တိုက်သည် Socket_wsaprotocol_info_import ကို မဖုံးထားပါ။ များသောအားဖြင့် system API ကိုတိုးချဲ့ရန်လိုအပ်သည်။
<?php
// စိတ်ကြိုက် extension encapsulations များရှိကြောင်းယူဆပါ wsaprotocol_info_import
$protocol_info = getProtocolInfoFromOtherProcess();
$socket = socket_wsaprotocol_info_import($protocol_info);
if ($socket === false) {
echo "တင်သွင်း socket ဆုံးရှုံး";
} else {
echo "socket တင်သွင်းအောင်မြင်ခြင်း,ဆက်သွယ်ရေးဆက်လက်နိုင်ပါတယ်";
}
?>
<?php
// Pseudocode ဥပမာ,တကယ်တော့, သင်သည်နောက်ခံအလွှာကိုခေါ်ရန်လိုအပ်သည် C ကုဒ်သို့မဟုတ်တိုးချဲ့ပညာပံ့ပိုးမှု
function receiveSocketFd($unixSocket) {
// အသုံးပြု recvmsg လာကြ socket စကားဝိုင်း
// ဤအပိုင်း PHP ထောက်ခံမှုမပါဘဲဇာတိ,တိုးချဲ့ခံရဖို့လိုအပ်ပါတယ်
}
$fd = receiveSocketFd($unixDomainSocket);
if ($fd === false) {
echo "လွှဲယူသည် socket ဆုံးရှုံး";
} else {
echo "လွှဲယူသည် socket အောင်မြင်ခြင်း";
}
?>
သီးခြားထင်ရှားသော | Windows ( Socket_wsaprotocol_info_import ) | Linux / MACOS (POSIX Socket) |
---|---|---|
Socket_wsaprotocol_Info_import ကိုထောက်ပံ့သည်ဖြစ်စေ, | Supported, Winsock API မှသီးသန့် | မပံ့ပိုးပါ |
Cross-process Socket Delivery Method ကို | WSAPROTOCOL_InFO ဖွဲ့စည်းပုံနှင့်သွင်းကုန်လုပ်ဆောင်ချက်ကိုသုံးပါ | Unix ဒိုမိန်း socket မှတဆင့်ဖိုင်ဖော်ပြချက်များကိုဖြတ်သန်းခြင်း |
PHP ပံ့ပိုးမှုအခြေအနေ | extension ကိုစိတ်ကြိုက်ပြုပြင်ရန်သို့မဟုတ် Windows API ဟုခေါ်ဆိုရန်လိုအပ်သည် | အခြေခံတိုးချဲ့မှုသို့မဟုတ် system ခေါ်ဆိုမှုအထောက်အပံ့အတွက်လိုအပ်သည် |
ဖွံ့ဖြိုးရေးရှုပ်ထွေး | 0 င်းဒိုး features တွေကိုမှီခိုနေရတဲ့ပတ်ဝန်းကျင်ကအကန့်အသတ်ရှိတယ် | Unix Socket Auxiliary Data ကို process လုပ်ရန်လိုအပ်သည်, နည်းပညာတံခါးခုံသည်မြင့်မားသည် |
အိတ်ဆောင် | 0 င်းဒိုးသာ | Unix ကဲ့သို့သောစနစ်များသာ |
Socket_wsaprotocol_Info_import ဆိုသည်မှာ Windows ပလက်ဖောင်းအတွက် Socket Socket Import ယန္တရားတစ်ခုဖြစ်သည်။ Linux (သို့) MacOS ပတ်ဝန်းကျင်ကိုတိုက်ရိုက်ဆိပ်ကမ်းကိုတိုက်ရိုက်တင်ရန်မဖြစ်နိုင်ပါ။ PHPP ကွန်ယက်အက်ပလီကေးရှင်းများသည်အလားတူလုပ်ဆောင်ချက်များကိုအကောင်အထည်ဖော်ရန်လိုအပ်ပါကလိုက်လျောညီထွေစွာစာပလက်ဖောင်းများအနေဖြင့်လိုက်လျောညီထွေဖြစ်အောင်ဖြေရှင်းနည်းများကိုသီးခြားစီအကောင်အထည်ဖော်ရမည်။
စွမ်းဆောင်ရည်မြင့် cross-process socket socket delivery လိုအပ်သည့် PHP application များအတွက်အကြံပြုသည် -
Winsock API နှင့် Windows ပလက်ဖောင်းတွင် Listsock API နှင့်ဆက်စပ်သော extensions များကိုသုံးပါ။
Unix Domain Socket နှင့် Linux / Macos ပလက်ဖောင်းပေါ်ရှိဖိုင်ဖော်ပြသည့်ကိရိယာများပေးပို့ခြင်းယန္တရားကိုအသုံးပြုခြင်းသည် C extensions ကိုခေါ်ဆိုရန်လိုအပ်နိုင်သည်။
လုပ်ငန်းစဉ်များအနှံ့အပြားသို့တိုက်ရိုက်သွားသော sockets များဖြတ်သန်းခြင်းကိုရှောင်ရှားရန် (Redis, Message ပွဲစားများစသဖြင့်) (Redis, Message ပွဲစားများစသည်တို့) ကိုသုံးပါ။