PHP ကို အသုံးပြု. နိမ့်ကျသောကွန်ယက်များကို ပရိုဂရမ်းဖြင့်ပရိုဂရမ်အနိမ့်ကွန်ယက်များ၌ပရိုဂရမ်းမင်းကိုအဆင့်နိမ့်သောကွန်ယက်များ၌အရေးကြီးသောသော်လည်းကောင်း, Socket သည်ပိတ်ဆို့ခြင်း mode တွင်ရှိနေခြင်းရှိမရှိကိုထိန်းချုပ်သည်ဖြစ်စေ Connection Initialization Phase တွင် Socket ၏အပြုအမူကိုထိခိုက်စေသည်။ ဤဆောင်းပါးသည် Socket_set_set_block () ကို မည်သို့အသုံးပြုရမည်ကိုသရုပ်ဖော်ရန်ဥပမာများနှင့်အခြေခံမူများကို အသုံးပြု. ၎င်း၏ဆက်သွယ်မှုစီးဆင်းမှုကိုထိန်းချုပ်ရန်နှင့်၎င်း၏လုပ်ဆောင်မှုကိုခွဲခြမ်းစိတ်ဖြာခြင်းကိုသရုပ်ဖော်ရန်ဥပမာများနှင့်မူများကိုသုံးပါမည်။
ကွန်ယက်ဆက်သွယ်ရေးတွင် "ပိတ်ဆို့ခြင်း" ဆိုသည်မှာ socket socket operty (ဥပမာ Connect သို့မဟုတ် Read ကဲ့သို့) ကိုချက်ချင်းမပြီးစီးနိုင်သည့်အခါပရိုဂရမ်သည်ကွပ်မျက်ခြင်းနှင့်စစ်ဆင်ရေးပြီးစီးရန်စောင့်ဆိုင်းလိမ့်မည်။ "ပိတ်ဆို့ခြင်းမဟုတ်သော" ဆိုသည်မှာဤလုပ်ငန်းများချက်ချင်းပြန်လာလိမ့်မည်ဟုဆိုလိုသည်။
PHP တွင် Socket သည်ပုံမှန်အားဖြင့်ပိတ်ဆို့ခြင်း mode ကို၌တည်ရှိ၏။ ဆိုလိုသည်မှာသင်သည် socket_connect () ဟုခေါ်ဆိုလျှင် () ဝေးလံခေါင်သီသော server ကိုမတုံ့ပြန်ပါကဆက်သွယ်မှုသည်အောင်မြင်သောသို့မဟုတ်အချိန်ကုန်သက်သာသည်အထိ script သည်စောင့်ဆိုင်းလိမ့်မည်။
Socket_set_Stock () သည် PHP မှပေးသော function တစ်ခုဖြစ်သည်။ သက်ဆိုင်ရာမဟုတ်သောပိတ်ဆို့ခြင်း function သည် socket_set_set_nonblock () ဖြစ်သည်။ connection initicalization လုပ်ငန်းစဉ်ကိုထိန်းချုပ်သည့်အခါဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်သည့်အခါဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ခြင်းသည်ပိုမိုလွယ်ကူစွာဆက်သွယ်မှုစီမံခန့်ခွဲမှုယုတ္တိဗေဒကိုရရှိနိုင်သည်။
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("ဖန်တီး. မရပါsocket: " . socket_strerror(socket_last_error()));
}
// ဆက်သွယ်မှုဖြစ်စဉ်ကိုထိန်းချုပ်ရန်ပိတ်ဆို့ခြင်းမဟုတ်သော mode ကိုသတ်မှတ်ပါ
socket_set_nonblock($socket);
$host = 'gitbox.net';
$port = 80;
$time_start = time();
$timeout = 5;
// ချိတ်ဆက်ရန်ကြိုးစားပါ
@socket_connect($socket, $host, $port);
// ပိတ်ဆို့ခြင်း mode ကိုမှပြောင်းပါ,အတူလုပ်ကိုင် select ဆက်သွယ်မှုပြီးစီးရန်စောင့်ပါ
socket_set_block($socket);
// အသုံးပြု select ဆက်သွယ်မှုရလဒ်ကိုစောင့်ပါ
$write = [$socket];
$except = [$socket];
$read = null;
$tv_sec = $timeout;
$tv_usec = 0;
$select_result = socket_select($read, $write, $except, $tv_sec, $tv_usec);
if ($select_result > 0 && in_array($socket, $write)) {
echo "အောင်မြင်စွာဆက်သွယ်မှု\n";
} else {
echo "ချိတ်ဆက်မှုမအောင်မြင်ပါ\n";
}
socket_close($socket);
အဓိကချည်နှောင်ခြင်းကိုရှောင်ကြဉ်ခြင်း မပြုပါနှင့်။ connection ကိုချိတ်ဆက်ခြင်းမပြုမီပိတ်ဆို့ခြင်းမရှိသောပိတ်ဆို့ခြင်းကိုချိန်ညှိခြင်းအားဖြင့်ပိတ်ဆို့ခြင်း mode သို့ပြန်ပြောင်းခြင်းအားဖြင့် "allynchronous connection + ထပ်တူစစ်ဆင်ရေးပေါင်းစပ်ခြင်း၏ပေါင်းစပ်မှုကိုသင်ရရှိနိုင်ပါသည်။
စိတ်ကြိုက် thinout_Connect () ပိတ်ဆို့ခြင်း၏ပိတ်ဆို့ခြင်းအချိန် () ကို operating system ၏ definition system ၏ပုံမှန်အချိန်ကုန်ခြင်းဖြင့်ထိန်းချုပ်ထားသည်။ သို့သော် server ကိုတု န့ ်ပြန်မှုနှေးကွေးသောကြောင့်အသုံးပြုသူအတွေ့အကြုံတွင်ပျက်စီးခြင်းကိုရှောင်ရှားရန်စောင့်ဆိုင်းနေသည့်အချိန်ကိုတိကျစွာထိန်းချုပ်နိုင်သည်။
ပိုမိုရှုပ်ထွေးသောပြည်နယ်စီးဆင်းမှုစီမံခန့်ခွဲမှု Socket_set_set_Block () ကို အသုံးပြုခြင်းသည် "ကြိုးစားအားထုတ်မှု" မဟုတ်ဘဲ "မည်သည့်အရာ" ကိုမဆို "အတည်ပြုသည့်တုံ့ပြန်မှု" ဖြစ်ကြောင်းရှင်းရှင်းလင်းလင်းခွဲခြားနိုင်သည်။
PHP သည်အဆင့်မြင့် stream_client_cletient_cletient () ကို ထောက်ပံ့သည်။ ၎င်းသည်ပိတ်ဆို့ခြင်းသို့မဟုတ်ပိတ်ဆို့ခြင်းမရှိခြင်းကိုအထောက်အကူပြုသည်။ ဥပမာအားဖြင့်, မြင့်မားသောတစ်ပြိုင်နက်တည်း connection testing tools များ, ဓလေ့ထုံးစံ client များနှင့် Socket-based protocol emulators ပင်တည်ဆောက်ခြင်း။
Socket_set_sblock () သည် ရိုးရှင်းသောပြည်နယ် switching function တစ်ခုသာဖြစ်ပုံရသည်။ ၎င်း၏အသုံးပြုမှုကိုကျွမ်းကျင်ခြင်းသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်း, ပြတ်ပြတ်သော,