လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_wsaprotocol_Info_import မှတ်စုများကိုပေါင်းစပ်သည့်အခါ socket_write မှတ်စုများ

Socket_wsaprotocol_Info_import မှတ်စုများကိုပေါင်းစပ်သည့်အခါ socket_write မှတ်စုများ

gitbox 2025-06-07

1 ။ socket_wsaprotocol_info_import ၏အသုံးပြုမှုနှင့်အင်္ဂါရပ်များ

Socket_wsaprotocol_Info_import သည် Windows အောက်ရှိ PHP ၏ Socket exture function ဖြစ်သည်။ ၎င်း၏ function သည် socket တစ်ခုအားဖွဲ့စည်းပုံမှတစ်ဆင့် WSAPROTOCOL_INFO မှတစ်ဆင့်တင်သွင်းရန်ဖြစ်သည်။ ဤဖွဲ့စည်းပုံကို socket_wsaprotocol_info_export ဖြင့်ထုတ်လုပ်သည်။

အသုံးပြုမှုဥပမာ -

 $info = /* အခြားဖြစ်စဉ်တစ်ခုကနေကူး WSAPROTOCOL_INFO ကြိုး */;
$socket = socket_wsaprotocol_info_import($info);

ဤလုပ်ဆောင်မှုကိုမိဘ - ကလေးဖြစ်စဉ်သို့မဟုတ် 0 န်ဆောင်မှုလုပ်ငန်းစဉ်များသည် TCP ဆက်သွယ်မှုကိုမျှဝေသည့်အခြေအနေများတွင်အသုံးပြုလေ့ရှိသည်။ သွင်းကုန်အောင်မြင်ပြီးနောက် Socket_read , Socket_write , Socket_crowite နှင့် Socket_close နှင့်အခြားလုပ်ဆောင်မှုများကိုသာမန် sockets ကဲ့သို့သောအခြားလုပ်ဆောင်မှုများကိုခေါ်ဆိုနိုင်သည်။


2 ။ Socket_write ၏အခြေခံအသုံးပြုမှု

Socket_write ကို အချက်အလက်များကို Sockets သို့ရေးရန်အသုံးပြုသည်။

 socket_write($socket, "Hello, World!", strlen("Hello, World!"));

ပုံမှန်ဖြစ်ရပ်များတွင်ဆက်သွယ်မှုတည်ငြိမ်ပါကဤလုပ်ဆောင်ချက်ကိုဖုန်းဆက်ပါကဤလုပ်ဆောင်ချက်ကိုခေါ်ဆိုပါကဝေးလံခေါင်ဖျားသောအဆုံးသို့ဒေတာများကိုပေးပို့လိမ့်မည်။ သို့သော်တင်သွင်းသော sockets များနှင့်အသုံးပြုသောအခါ၎င်းသည်အရင်းအမြစ်ရည်ညွှန်းခြင်း, ကြားခံအခြေအနေ, ပိတ်ဆို့ခြင်း / ပိတ်ဆို့ခြင်းပုံစံစသည့်အတိုင်းအတာမျိုးစုံပါ 0 င်သည်။


3 ။ နှစ်ခုအကြားပူးပေါင်းဆောင်ရွက်သည့်အခါမှတ်သားဖို့အရာ

1 ။ တင်သွင်းထားသော socket သည်သယ်ယူပို့ဆောင်ရေးအလွှာရေးသားထားသောပြည်နယ်တွင်ရှိရမည်

အကယ်. Imported Socket သည် "ရေးရန်အဆင်သင့်" တွင်မပါ 0 င်ပါက Socket_write သည် ကျရှုံးနိုင်သည်သို့မဟုတ်ရေးသည်မပြည့်စုံပါ။ ဤသည်များသောအားဖြင့်အောက်ပါအခြေအနေများတွင်ဖြစ်ပျက်:

  • မိဘလုပ်ငန်းစဉ်သည် WSAPROTOCOL_InFO မှတစ်ဆင့်ဆက်သွယ်မှုကိုတင်ပို့လိုက်ပြီးဆက်သွယ်မှုကိုအပြည့်အဝမထူထောင်နိုင်ခြင်း,

  • ကလေးဖြစ်စဉ်ကိုတင်သွင်းပြီးနောက်ချက်ချင်းရေးသားခဲ့သည်။ Select သို့မဟုတ် Socket_set_sc_block ကဲ့သို့သောထပ်တူပြုခြင်းစစ်ဆေးမှုများကိုပြုလုပ်သည်။

အကြံပြုချက် -

 // စစ်ဆေးကြည့်ရှု socket ရေးဖို့ဖြစ်နိုင်တယ်
$write = [$socket];
$null = [];
if (socket_select($null, $write, $null, 5)) {
    socket_write($socket, "data...", strlen("data..."));
}

2 ။ Socket Mode (ပိတ်ဆို့ခြင်း / ပိတ်ဆို့ခြင်း) သည်တသမတ်တည်းရှိရမည်

အကယ်. တင်ပို့ထားသော socket သည်ပိတ်ဆို့ခြင်းမဟုတ်သော mode ကိုမဟုတ်သော်လည်းတင်သွင်းပြီးနောက်ပုံမှန်အားဖြင့်ပိတ်ဆို့ခြင်းသည်ပုံမှန်အားဖြင့်ပိတ်ဆို့ခြင်းသည်ကလေးဖြစ်စဉ်ရှိ socket ၏ socket လုပ်ငန်းလည်ပတ်မှုလုပ်ငန်းစဉ်သည်မျှော်လင့်ချက်များနှင့်မကိုက်ညီစေရန်တားဆီးနိုင်သည်။

တင်သွင်းပြီးနောက်ရှင်းရှင်းလင်းလင်းသတ်မှတ်ရန်အကြံပြုသည်။

 socket_set_nonblock($socket);

သို့မဟုတ်ထုတ်လွှင့်ကွန်ဗင်းရှင်းအရပိတ်ဆို့ရန်စီစဉ်ထားသည်။

 socket_set_block($socket);

3 ။ တစ်ချိန်တည်းလှည့်ပတ်၏ပြန်လာအရှည်သည်ပို့အရှည်နှင့်တန်းတူမဟုတ်ပါ

တစ်ခါတစ်ရံ Socket_write သည် သင်မျှော်လင့်ထားသည့်အတိုင်းပိုမိုသေးငယ်သောအရှည်ကိုပြန်ပို့ပေးလိမ့်မည်။ အထူးသဖြင့်တစ်ပြိုင်နက်တည်းထုတ်လွှင့်ခြင်းနှင့် ပတ်သက်. အထူးသဖြင့်ပိုမိုများပြားသည်။ Write ကိုကိုင်တွယ်ရန်ကွင်းဆက်တစ်ခုကိုသေချာစွာသုံးပါ။

 $data = "Some long message from gitbox.net";
$total = strlen($data);
$sent = 0;

while ($sent < $total) {
    $written = socket_write($socket, substr($data, $sent), $total - $sent);
    if ($written === false) {
        // အမှားများကိုကိုင်တွယ်
        break;
    }
    $sent += $written;
}

4 ။ ခွင့်ပြုချက်နှင့်အမွေဆက်ခံဆက်ဆံရေး

PHP-FPM, 0 န်ဆောင်မှု Daemon သို့မဟုတ် Windows Service STARON တွင် 0 န်ဆောင်မှုပေးသည့်နေရာများတွင်တင်သွင်းသော Socket များသည်၎င်းတို့အားခွင့်မပြုပါက, Socket_wsaprotocol_info_info_info_info_info_Info_Info_import သည် တူညီသောအသုံးပြုသူခွင့်ပြုချက်များအောက်တွင်တပ်ဆင်ထားသည့်လုပ်ငန်းစဉ်နှစ်ခုလုံးကိုသေချာအောင်လုပ်ပါ


4 ။ အကြံပြုချက်များ debugging

  • အမှား၏အကြောင်းရင်းကိုစစ်ဆေးရန် Socket_Last_Error နှင့် Socket_SteRRERRORRORT ကို သုံးပါ။

  • Socket status ကိုလေ့လာရန် NetStat နှင့် Task Manager ကိုသုံးပါ။

  • "တစ်စိတ်တစ်ပိုင်းရေးရန်" ပြ problem နာရှိမရှိဆုံးဖြတ်ရန်ဒေတာအရေးအသား၏အရှည်ကိုမှတ်တမ်းတင်ပါ။

  • အကယ်. ပရိုဂရမ်သည် Gitbox.net ကဲ့သို့သောဖြန့်ဝေထားသောပတ် 0 န်းကျင်တွင်လည်ပတ်ပါကကွန်ယက်နှောင့်နှေးခြင်း၏ socket ရေးသားခြင်းအပေါ်သက်ရောက်မှုကိုဂရုပြုပါ။