Socket_set_Set_Block function ၏အဓိကလုပ်ဆောင်ချက်မှာ socket တစ်ခုကိုပိတ်ဆို့ရန် socket တစ်ခုသတ်မှတ်ရန်ဖြစ်သည်။ Blocking Mode ဆိုသည်မှာ Socket_read (သို့) Socket_write ကဲ့သို့သောလုပ်ငန်းများကိုလုပ်ဆောင်သည့်အခါအချက်အလက်များအဆင်သင့်မဖြစ်သေးပါကအချက်အလက်များမရရှိမှီသို့မဟုတ်စစ်ဆင်ရေးပြီးဆုံးသည်အထိပရိုဂရမ်သည်ခေတ္တရပ်တန့်သွားလိမ့်မည်။
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, "gitbox.net", 80);
socket_set_block($socket);
socket_write($socket, "GET / HTTP/1.1\r\nHost: gitbox.net\r\nConnection: Close\r\n\r\n");
$response = '';
while ($out = socket_read($socket, 2048)) {
$response .= $out;
}
socket_close($socket);
echo $response;
?>
အထက်ပါကုဒ်တွင် Socket_set_block သည် Socket_read သည် အချက်အလက်များရောက်ရှိလာခြင်းကိုစောင့်မျှော်ခြင်းနှင့်ချက်ချင်းပြန်လာမည်မဟုတ်ပါ။
ပိတ်ဆို့ခြင်း mode ကို၏အားသာချက်များ <br> <br> ပရိုဂရမ်သည်ခေါ်ဆိုမှုများကိုပိတ်ဆို့ထားသည့်အခါ CPU ကိုအခြားလုပ်ငန်းများကိုလုပ်ဆောင်ရန် operating system သို့ထုတ်ပြန်သည်။ တနည်းအားဖြင့် CPU သည် Socket State Pollings မ 0 င်ဘဲ 0 န်ဆောင်မှုပေးခြင်းမဟုတ်ပါ။ ၎င်းသည် CPU အသုံးပြုမှုနည်းပါးသောအရင်းအမြစ်များကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုထားခြင်းဖြစ်သည်။
ပိတ်ဆို့ခြင်း mode ကို၏ဆိုးကျိုးများ <br> <br> ပိတ်ဆို့ခြင်းဆိုသည်မှာပရိုဂရမ်သည်ခေါ်ဆိုမှုတစ်ခုတွင်ရပ်တန့်သွားမည်ဖြစ်သည်။ အကယ်. ကွန်ယက်သို့မဟုတ်သက်တူရွယ်တူတုံ့ပြန်မှုနှေးကွေးလျှင်ပရိုဂရမ်သည် "မှီဝဲ" ဖြစ်လိမ့်မည်။ မြင့်မားသောတစ်ပြိုင်နက်တည်းကဖြစ်ရပ်များတွင်ပိတ်ဆို့ခြင်း mode တွင် socket မျိုးစုံအသုံးပြုခြင်းသည်နှေးကွေးစွာလျှောက်လွှာကိုတုံ့ပြန်နိုင်သည်။
ပိတ်ဆို့ခြင်း mode သည်သဘာဝအားဖြင့် CPU အသုံးပြုမှုကိုလျှော့ချရန်ကူညီသော်လည်း၎င်းသည်ပုံမှန်မဟုတ်သော CPU အသုံးပြုမှုပြ problem နာကိုလက်တွေ့ကျကျအသုံးချပရိုဂရမ်များနှင့်ကြုံတွေ့ရဆဲဖြစ်သည်။ ဘုံအကြောင်းပြချက်များတွင်:
မကြာခဏပိတ်ဆို့ခြင်းမဟုတ်သောမဲရုံများ (အလုပ်များနေသောစောင့်ဆိုင်းခြင်း)
developer များကပိတ်ဆို့ခြင်းမဟုတ်သော mode ကို အသုံးပြု. မဲပေးခြင်းဆိုင်ရာယုတ္တိဗေဒကိုသူတို့ကိုယ်တိုင်အသုံးချသောအခါပရိုဂရမ်သည် CPU ကိုအလုပ်များစေပြီး CPU ကိုအလုပ်များစေလိမ့်မည်။
မမှန်ကန်သောပိတ်ဆို့ခြင်း / Non-Blocking Mode switching <br> <br> အကယ်. socket state switching ကိုမကြာခဏထိန်းချုပ်ထားပြီးမထိန်းချုပ်နိုင်ပါက၎င်းသည်စနစ်မခေါ်ဆိုနိုင်ဘဲ CPU ဝန်ကိုတိုးမြှင့်ပေးနိုင်သည်။
ပျောက်ဆုံးနေသောဖြစ်ရပ် - မောင်းနှင်သို့မဟုတ် allynchronous ယန္တရား ပိတ်ဆို့ခြင်းသာလျှင် sockets အမြောက်အများကိုလုပ်ဆောင်ရန်အသုံးပြုသည်။
Socket_select သည် socket states များကိုနားထောင်နိုင်ပြီး sockets တစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသော socket များသို့မဟုတ်တစ်ခုထက်ပိုသောအလုပ်များခြင်းကိုရှောင်ရှားနိုင်သည့်အခါလည်ပတ်နိုင်သည်။
<?php
$read = [$socket];
$write = $except = null;
if (socket_select($read, $write, $except, 5) > 0) {
foreach ($read as $readableSocket) {
$data = socket_read($readableSocket, 2048);
// အချက်အလက်များကိုထုတ်ယူခြင်း
}
}
?>
ဤနည်းအားဖြင့် Socket တွင်အချက်အလက်များရှိသည့်အခါပရိုဂရမ်သည် CPU IDLLENENess ကိုလျှော့ချသောအခါ,
ပိတ်ဆို့ခြင်း mode တွင်ရေရှည်ပိတ်ဆို့ခြင်းကိုတားဆီးရန်အချိန်ကို socket_set_option မှတဆင့်သတ်မှတ်နိုင်သည်။
<?php
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, ["sec"=>3, "usec"=>0]);
socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, ["sec"=>3, "usec"=>0]);
?>
စနစ်တကျကြားခံအရွယ်အစားကိုစနစ်တကျညှိနှိုင်းခြင်းအားဖြင့်စနစ်ခေါ်ဆိုမှုများနှင့်အခြေအနေပြောင်းခြင်းအရေအတွက်ကိုလျှော့ချနိုင်သည်။
မြင့်မားသောတစ်ပြိုင်နက်တည်း applications များအတွက်ဖြစ်စဉ်များစွာသို့မဟုတ်အလုံးစုံစွမ်းဆောင်ရည်ကိုထိခိုက်စေခြင်းမှကာကွယ်ရန်ပိတ်ဆို့ခြင်းကြောင့်ဖြစ်ရတဲ့ပုလင်းများဝေငှရန်ဖြစ်စဉ်များသို့မဟုတ်ချည်မျှင်မျိုးစုံကိုသုံးနိုင်သည်။
PHP တွင် SWOOLE နှင့် Refillphp ကဲ့သို့သော SWOOLE နှင့် Refillphp ကဲ့သို့သော isoole နှင့် Refillphp တို့ဖြစ်သည်။ ၎င်းသည်ပိတ်ဆို့ခြင်းမဟုတ်သော,
Socket_set_BLOCK ကို ပိတ်ထားသည်, CPU IDLLENess ကိုလျှော့ချပြီးတစ်ခုတည်းသောဆက်သွယ်မှုများ၏ထိရောက်မှုကိုတိုးတက်စေသည်။
ပိတ်ဆို့ခြင်း mode သည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းကအပလီကေးရှင်းတုံ့ပြန်မှုကိုတုံ့ပြန်နိုင်သည်။
Socket_select ကဲ့သို့သောမြှောက်ဖွဲ့နည်းပညာများကိုပေါင်းစပ်ခြင်း, Feelout Parameterse သည် CPU အသုံးပြုမှုကိုသိသိသာသာလျှော့ချနိုင်သည်။
asynchronous သို့မဟုတ် multi-process model ကိုအသုံးပြုခြင်းသည်စွမ်းဆောင်ရည်နှင့်အရင်းအမြစ်အသုံးချမှုကိုတိုးတက်စေရန်ထိရောက်သောနည်းလမ်းတစ်ခုဖြစ်သည်။
Socket_set_sblock ၏သက်ရောက်မှု၏နိယာမကိုနားလည်ခြင်းနှင့်ကျိုးကြောင်းဆီလျော်သော optimization ကိုပေါင်းစပ်ခြင်းနှင့်ကျိုးကြောင်းဆီလျော်သော optimization ကိုပေါင်းစပ်ခြင်းသည် PHP ကွန်ယက်အက်ပလီကေးရှင်းများကိုပိုမိုထိရောက်စွာတည်ငြိမ်စေနိုင်သည်။