PHP Network Programming တွင် Socket လည်ပတ်မှုသည်အဓိကအားဖြင့်ဆက်သွယ်ရေးကိုနားလည်သဘောပေါက်ရန်အဓိကနည်းလမ်းဖြစ်သည်။ Socket_set_Set_Block function သည် socket blocking mode ကိုထိန်းချုပ်ရန်အရေးကြီးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် developer များပိုမိုနားလည်သဘောပေါက်ရန်နှင့်ဤလုပ်ဆောင်မှုကိုပိုမိုနားလည်အောင်ပိုမိုနားလည်အောင်ကူညီရန် Socket_set_Set_Block နှင့်၎င်း၏အသုံးပြုမှုနည်းစနစ်များကိုအသေးစိတ်ဖော်ပြထားသည်။
Socket_set_block သည် PHP မှပေးသော function တစ်ခုဖြစ်သော fockets ကို mode ကိုပိတ်ဆို့ရန်နေရာချထားရန်ဖြစ်သည်။ ပိတ်ဆို့ခြင်း mode တွင် program သည် socket ၏ဖတ်ရန်နှင့်ရေးခြင်းလုပ်ငန်းလည်ပတ်မှုကိုခေါ်ဆိုသောအခါအချက်အလက်များကိုဖတ်လို့မရလျှင်သို့မဟုတ်ချက်ချင်းရေးသား။ မရပါကပရိုဂရမ်သည်ဒေတာအဆင်သင့်မဖြစ်သေးသည့်အချိန်အထိ (block) သည် (ပိတ်ပင်တားဆီးမှု) သည်စောင့်ဆိုင်းလိမ့်မည်။ ဤပုံစံသည်အခြေအနေများအတွက်အချိန်မှန်လိုအပ်ချက်များနှင့်မကိုက်ညီသောအခြေအနေများမှာရိုးရှင်းပါသည်။
သက်ဆိုင်ရာ function သည် socket_set_nonblock ဖြစ်သည်။ ၎င်းသည် socket ကိုပိတ်ဆို့ခြင်းမ mode သို့သတ်မှတ်ရန်အသုံးပြုသည်။
bool socket_set_block(resource $socket)
Parametermer
$ socket : မှန်ကန်သော socket အရင်းအမြစ်။
Value ကိုပြန်သွားပါ
အောင်မြင်မှုအပေါ် စစ်မှန်တဲ့ အောင်မြင်မှုနှင့်ပျက်ကွက်အပေါ် မှားယွင်းသော အပေါ်ပြန်လည်ရောက်ရှိ။
TCP socket တစ်ခုကိုဘယ်လိုဖန်တီးရမယ်ဆိုတာကိုပြသတဲ့ရိုးရှင်းတဲ့ဥပမာတစ်ခုပါ,
<?php
// ဖန်တီးTCPSockets
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("socket_create failed: " . socket_strerror(socket_last_error()));
}
// ဆာဗာကိုဆက်သွယ်ပါ(နမူနာဒိုမိန်းအမည်ကိုအစားထိုးထားသည်gitbox.net)
$server = 'gitbox.net';
$port = 80;
if (socket_connect($socket, $server, $port) === false) {
die("socket_connect failed: " . socket_strerror(socket_last_error($socket)));
}
// 设置Sockets为阻塞模式
if (!socket_set_block($socket)) {
die("Failed to set socket to blocking mode");
}
echo "Socket is now in blocking mode.\n";
// ပေးပို့HTTPဟုတ်ကဲ့ဥပမာ
$request = "GET / HTTP/1.1\r\nHost: $server\r\nConnection: Close\r\n\r\n";
socket_write($socket, $request, strlen($request));
// တုံ့ပြန်မှုအကြောင်းအရာကိုဖတ်ပါ
while ($out = socket_read($socket, 2048)) {
echo $out;
}
socket_close($socket);
?>
ပိတ်ဆို့ခြင်း mode ကိုရိုးရှင်းသောအခြေအနေများအတွက်သင့်တော်သည် အဆိုပါပိတ်ဆို့ခြင်း mode သည်အချက်အလက်များကိုစောင့်ဆိုင်းနေစဉ်အစီအစဉ်ကိုခေတ္တနားနေစေရန်ခွင့်ပြုသည်။ ယုတ္တိဗေဒသည်အလိုလိုသိပြီးရိုးရှင်းပြီး, သို့သော်မြင့်မားသောတစ်ပြိုင်နက်တည်းသို့မဟုတ်ပြတ်တောင်းပြတ်တောင်းအပြောင်းအလဲအတွက်အောင်မြင်ရန်မှာပိတ်ဆို့ခြင်းမရှိသော mode ကို socket_select ဖြင့်အသုံးပြုရန်အကြံပြုသည်။
ပိတ်ဆို့ခြင်းနှင့်ပိတ်ဆို့ခြင်းမဟုတ်သော switching <br> <br> အချို့သောအခြေအနေများတွင်ဤအစီအစဉ်သည်ပိတ်ဆို့ခြင်းအခြေအနေကိုပြောင်းလဲခြင်းအခြေအနေကိုပြောင်းလဲရန်လိုအပ်နိုင်သည်။ ဥပမာအားဖြင့်, ကန ဦး ဆက်သွယ်မှုသည်အချိန်ကုန်ခံရန်စောင့်ဆိုင်းခြင်းမှရှောင်ရှားရန်ပိတ်ဆို့ခြင်းမဟုတ်သော mode ကိုချမှတ်သည်။ အချက်အလက်သမာဓိကိုသေချာစေရန် data stritting and reception phase သည်ပိတ်ဆို့ခြင်း mode သို့ပြောင်းသည်။ ဤအချိန်တွင် Socket_set_Set_Block နှင့် Socket_set_set_set_scblock ကို ပေါင်းစပ်ခြင်းဖြင့်ရရှိနိုင်ပါသည်။
Socket_select ဖြင့်အသုံးပြုပါ ပိတ်ဆို့ခြင်း mode ကို calling socket_read ကို calling mode ကိုစောင့်ဆိုင်းပါလိမ့်မယ်, ဒီအစီအစဉ်ကိုမှီဝဲစေနိုင်သည်။ Socket သည်ဖတ်ရန်အချက်အလက်များရှိမရှိစစ်ဆေးရန် Socket_select function ကိုသုံးပါ။ ထို့နောက် deadlocks နှင့်ရေရှည်ပိတ်ဆို့မှုကိုရှောင်ရှားရန်ဖတ်ပါ။
အမှားကိုင်တွယ်ဖြေရှင်းခြင်း Network programming တွင်အမှားများသည်မလွှဲမရှောင်သာရှိသည်။ Socket_set_block သည် ပုံမှန်အားဖြင့်မမှန်ကန်သော socket ကိုဖြတ်သန်းသွားသောကြောင့်သို့မဟုတ် socket ကိုပိတ်ထားသည်။ Socket သည်ခေါ်ဆိုမှုမတိုင်မီသက်တမ်းရှိကြောင်းအတည်ပြုရန်သေချာပါကအမှားကုဒ်နှင့်အမှားအယွင်းများမအောင်မြင်ပါကအမှားကုဒ်နှင့်သတင်းအချက်အလက်များကိုမအောင်မြင်ပါ။
အချိန်ကုန်ထိန်းချုပ်မှုကိုပိတ်ဆို့ခြင်း <br> <br> ပုံသေ blocking mode တွင်ဖတ်ရန်နှင့်ရေးသားရန်အတွက်အချိန်ကုန်အကန့်အသတ်မရှိ, အစီအစဉ်ကိုအချိန်ကြာမြင့်စွာစောင့်ဆိုင်းစေနိုင်သည်။ အဆုံးမဲ့ပိတ်ဆို့ခြင်းကိုကာကွယ်ရန်အတွက်အချိန်ကုန်အချိန်ကို Sole_CVTOOO နှင့် SO_SNDTIONTIOO တို့နှင့်ပေါင်းစပ်။ socket_set_option ကို setock_set_option ဖြင့်သတ်မှတ်နိုင်သည်။
Socket_set_Block သည် PHP တွင် Socket blocking အပြုအမူကိုထိန်းချုပ်ရန်အဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ပိတ်ဆို့ခြင်းနှင့်ပိတ်ဆို့ခြင်း mode switching switching switching switching switching and in-in-blockout mode switching ကိုပေါင်းစပ်ခြင်း, အမှားကိုင်တွယ်ခြင်းနှင့်အချိန်ကုန်ခြင်းများကိုပေါင်းစပ်ခြင်း, ဤဆောင်းပါးသည်သင်၏ PHP Network Programming အတွက်အထောက်အကူဖြစ်လိမ့်မည်ဟုမျှော်လင့်ပါသည်။