PHP ၏ Socket Programming တွင် Socket_set_set_block () function ကိုအသုံးပြုသည်။ ပိတ်ဆို့ခြင်း mode တွင် socket_accept () သို့မဟုတ် socket_read () socket_accept () သို့မဟုတ် socket_read ( ) တွင်စစ်ဆင်ရေး () သည်ဒေတာများကိုရရှိနိုင်သည့်အတွက်စောင့်ဆိုင်းလိမ့်မည်။
ဤဆောင်းပါးသည် blocking mode ကို အခြေခံ. Socket Server တစ်ခုဖန်တီးရန် Socket_create () နှင့် Socket_bind () ကိုပေါင်းစပ်ရန် () ကိုပေါင်းစပ်ပါလိမ့်မည်။
Socket_set_block (Resource $ socket): Bool
ဤလုပ်ဆောင်ချက်သည်သတ်မှတ်ထားသော socket ကိုပိတ်ဆို့ခြင်းကိုပိတ်ထားရန်သတ်မှတ်ထားသည်။ ပြန်လည်နေရာချထားခြင်းသည် boolean ဖြစ်ပြီးအခြေအနေအောင်မြင်မှုရှိမရှိညွှန်ပြသည်။
ပိတ်ဆို့ခြင်း mode သည် ပုံမှန်အပြုအမူဖြစ်သည် ။
အောက်တွင် Socket_create () , Socket_bind (), Socket_Acken () , socket_acception ()) နှင့် socket_acception () socket_acception ()) နှင့် socket_acception () socket_acception () socket_acception mode ကို အသုံးပြု. Functions Socket socients socients socients () socket_acception mode ကို အသုံးပြု. အောက်တွင်ဖော်ပြထားသည်။
<code> & lt; php // tcp socket = socket_ocke_create (af_inet, socke_streread, sol_tcp ကိုဖန်တီးပါ။ အကယ်. ($ socket === fiss) {Die Delecate () မအောင်မြင်ပါက "Socket_create () မအောင်မြင်ပါ။ " Socket_Sast_Error (socket_last_error ()) ။ "\ n"); } // mode ကိုပိတ်ဆို့ဖို့သတ်မှတ်ထား
IF (! Socket_set_set_block ($ socket))
Die (") mode ကိုပိတ်ဆို့ရန်မသတ်မှတ်နိုင်ပါ။ " ။ Socket_strorror (socket_last_Error ($ socket)) ။ "\ n");
}
// IP နှင့် port ကိုချည်နှောင်ခြင်း
$ host = '0.0.0.0';
$ port = 12345;
IF (! Socket_bind) ($ socket, $ host, $ port))
Die ("Socket_bind () မအောင်မြင်ပါ -" Socket_strorror (socket_last_Error) (socket_last_error)) ။ "\ n");
}
// ဆက်သွယ်မှုကိုနားထောင်ပါ
if (! Socket_listen ($ Socket, 5)) {
Die ("Socket_listen () မအောင်မြင်ပါ။ " Socket_strerror (socket_last_error ($ socket)) ။ "\ n");
}
ECHO "ဆာဗာသည် {$ host}: {$ host}: {$ port}: {$ port} ... \ n";
နေစဉ် (စစ်မှန်တဲ့) {
ECHO "client connection ကိုစောင့်ဆိုင်း ... \ n";
$ client = socket_accept ($ socket),
လျှင် ($ client === fiss) လျှင်
ECHO "Socket_Accept () မအောင်မြင်ပါ။ Socket_strerror (Socket_last_Error ($ socket))) ။ "\ n";
ဆက်လုပ်ပါ
}
echo "client ကိုချိတ်ဆက်ထားသည်,ဒေတာကိုဖတ်ရှုခြင်း...\n";
// Client Message ကိုဖတ်ပါ(ဒေတာကိုလက်ခံရရှိသည်အထိပိတ်ပင်တားဆီးမှု)
$input = socket_read($client, 1024);
echo "မက်ဆေ့ခ်ျကိုလက်ခံရရှိခဲ့သည်: " . trim($input) . "\n";
$response = "ဆာဗာကိုဆက်သွယ်ရန်ကြိုဆိုပါသည်!မင်းပို့လိုက်တယ်:" . trim($input);
socket_write($client, $response, strlen($response));
socket_close($client);
}
// အဓိက socket ကိုပိတ်ပါ
Socket_close ($ socket);
</ code>
ဆာဗာနှင့်ချိတ်ဆက်ရန် Telnet Tool ကိုသုံးနိုင်သည်။
telnet 127.0.0.1 12345
မည်သည့်စာသားကိုမဆိုရိုက်ထည့်ပါ။ ဆာဗာသည်သင်ပို့လိုက်သောအရာကိုတုံ့ပြန်လိမ့်မည်။
ပိတ်ဆို့ခြင်း mode သည်အောက်ပါအခြေအနေများအတွက်သင့်တော်သည်။
ရိုးရှင်းသောအမှတ်အသား server ကိုမော်ဒယ်
client connection တစ်ခုသာတစ်ကြိမ်တွင်ပြုလုပ်သည်
အနည်းငယ်သာအချိန်နှင့်တပြေးညီလိုအပ်သောဝန်ဆောင်မှုများ
သို့သော်မြင့်မားသောတစ်ပြိုင်နက်တည်း applications များအတွက်, များသောအားဖြင့် multi-process သို့မဟုတ် allynchronous နည်းလမ်းများနှင့် တွဲဖက်. ပိတ်ဆို့ခြင်းမဟုတ်သော mode ကိုအသုံးပြုရန်အကြံပြုလေ့ရှိသည်။
Debing နှင့်ဖြန့်ကျက်မှုတွင်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန် Error_log သို့မဟုတ် log files များနှင့်ပေါင်းစပ်။ outdo socket error သတင်းအချက်အလက်များကို outputor_log သို့မဟုတ် log files များနှင့်ပေါင်းစပ်ရန်အကြံပြုသည်။ ဥပမာအားဖြင့်, အမှားများကိုဖိုင်တစ်ခုသို့ရေးသားနိုင်သည်။
error_log("socket_error: " . socket_strerror(socket_last_error()), 3, "/var/log/php_socket_error.log");
Socket_set_Stock () , socket ၏ I / O ၏အပြုအမူကိုပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်နိုင်သည်။ အချို့ဖြစ်ရပ်များတွင်ရှင်းလင်းပြတ်သားစွာပိတ်ဆို့ခြင်းစနစ်သည်ပုံမှန်အပြုအမူပြုပြင်မွမ်းမံမှုများကြောင့်ခြွင်းချက်ပြ problems နာများကိုရှောင်ရှားနိုင်သည်။ Socket_create () နှင့် Socket_bind ()) နှင့်ပေါင်းစပ်ပြီးသည့်အခါယုတ္တိရှိသောအမိန့်သည်ပထမဖန်တီးမှုနှင့်ပိတ်ဆို့ခြင်း mode ကိုတည်ဆောက်ခြင်းနှင့်ပိတ်ဆို့ခြင်း mode ကိုတည်ဆောက်ရန်,
အထက်ပါဥပမာတွင်သင်သည်ဆာဗာသို့ဖြန့်ဖြူးပါက http://gitbox.net:12345 သို့ဆက်သွယ်မှုစစ်ဆေးမှုကို browser သို့မဟုတ် API တောင်းဆိုမှုမှတဆင့်) သို့ပို့နိုင်သည်။
socket_set_sblock () ၏အသုံးပြုမှုကိုနားလည်ရန်ဤဆောင်းပါးသည်သင်အထောက်အကူပြုလိမ့်မည်ဟုမျှော်လင့်ပါလိမ့်မယ်မျှော်လင့်ပါတယ်။