PHP တွင်ကွန်ယက်ဆက်သွယ်ရေးအတွက် sockets သုံးသည့်အခါဆက်သွယ်မှုကိုပိတ်ရန်နည်းလမ်းများစွာရှိသည်။ ၎င်းတို့အနက် stream_socket_shutdown function သည် developer များအား socket ၏ Shutdown Product ကိုပိုမိုကောင်းမွန်စွာထိန်းချုပ်ခွင့်ပြုသည်။ Stream_Socket_shutdown ၏အခန်းကဏ် and ကိုနားလည်ခြင်းနှင့်၎င်း၏သက်ဆိုင်သည့်အခြေအနေများသည်ကုဒ်၏ကြံ့ခိုင်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အလွန်အရေးကြီးသည်။
Steam_socket_shutdown သည် Socket connection များကိုပိတ်ရန် PHP တွင်အသုံးပြုသောနည်းလမ်းဖြစ်သည်။ ရိုးရှင်းသော fcose () သို့မဟုတ် socket_close () နှင့်မတူသည်မှာ developer များအနေဖြင့်ဖတ်ရန်နှင့်ရေးဆွဲခြင်းကိုပိတ်ရန်, function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">stream_socket_shutdown</span></span><span>(resource </span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$how</span></span><span>);
</span></span>
$ socket : ပိတ်ထားရန် socket အရင်းအမြစ်ကိုကိုယ်စားပြုတယ်။
$ မည်သို့ - ပိတ်ထားသောစစ်ဆင်ရေးအမျိုးအစားကိုထိန်းချုပ်သည်။ ၎င်းသည်အောက်ပါဖြစ်နိုင်သည်။
Steam_shut_rd : ဖတ်ပါ။
Stream_shut_wr : စာရေးစစ်ဆင်ရေးကိုသာပိတ်ပြီးဖတ်ပါ။
Steam_shut_rdwr : ပိတ်ပစ်သည်တစ်ပြိုင်နက်တည်းလည်ပတ်ခြင်းနှင့်လုပ်ဆောင်ခြင်းကိုပြုလုပ်ပါ။ ဆက်သွယ်မှုလုံးဝကိုပိတ်လိုက်သည်။
အချို့သော application တစ်ခုတွင် client (သို့) ဆာဗာသည်အချက်အလက်များကိုပေးပို့ပြီးနောက် client သို့မဟုတ် server သည်ရေးရန်မလိုအပ်တော့ပေ။ ဥပမာအားဖြင့် HTTP တောင်းဆိုမှုပြီးဆုံးသွားသောအခါသုံးစွဲသူသည်အချက်အလက်များကိုမပို့တော့ဘဲဆာဗာကိုတုန့်ပြန်ရန်စောင့်ဆိုင်းရန်လိုအပ်သည်။ ဤအချိန်တွင်သင်သည် stream_socket_shutdown ကို အသုံးပြု. အရင်းအမြစ်သုံးစွဲမှုကိုလျှော့ချရန်နှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အတွက် stream_socket_shutdown ကို သုံးနိုင်သည်။
နမူနာကုဒ်:
<span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://example.com:80"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-string">"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"</span></span><span>);
</span><span><span class="hljs-comment">// တောင်းဆိုမှုကိုပေးပို့ပြီးနောက်ရေးရန်စစ်ဆင်ရေးကိုပိတ်ပါ,နောက်တဖန်ဒေတာပေးပို့ခြင်းမရှိပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_socket_shutdown</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, STREAM_SHUT_WR);
</span><span><span class="hljs-comment">// ဆာဗာတုံ့ပြန်မှုကိုဖတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fread</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>);
</span></span>
ဤဥပမာတွင်ဖောက်သည်သည် HTTP တောင်းဆိုမှုကိုပေးပို့ပြီးဆာဗာသို့ဒေတာများကိုရေးရန်မလိုအပ်တော့ပါ ။
အချို့သော application များ၌ client သို့မဟုတ် server သည်အခြားပါတီမှအချက်အလက်များကိုသာဖတ်ရန်လိုအပ်ပြီးဒေတာများကိုမပို့တော့ပါ။ ဤအချိန်တွင်သင် stream_socket_shutdown ကို ပိတ်ရန် STAREMOCK_SHOCT_SHOCT_SOCKNONDNDONDONS ကိုသင် အသုံးပြု. ဆက်သွယ်မှုမလိုအပ်သောအရင်းအမြစ်များကိုမစားနိုင်တော့ပါ။ ဥပမာအားဖြင့်, FTP protocol ၏အချို့သောပုံစံများတွင်ဖောက်သည်များနှင့်ဆာဗာများသည်စာအရေးအသားမပါဘဲအချက်အလက်များကိုသာဖတ်ရန်သာလိုအပ်သည်။
နမူနာကုဒ်:
<span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://example.com:21"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-string">"USER anonymous\r\n"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-string">"PASS anonymous\r\n"</span></span><span>);
</span><span><span class="hljs-comment">// နောက်တဖန်ဒေတာပေးပို့ခြင်းမရှိပါ,ရေးရန်စစ်ဆင်ရေးကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_socket_shutdown</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, STREAM_SHUT_WR);
</span><span><span class="hljs-comment">// ဆာဗာမှပြန်လာသောတုံ့ပြန်မှုကိုဖတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fread</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>);
</span></span>
WROTION စစ်ဆင်ရေးကိုပိတ်ခြင်းအားဖြင့်မလိုအပ်သောအရင်းအမြစ်အသုံးပြုမှုကိုလျှော့ချနိုင်ပြီးဆက်သွယ်ရေးလုပ်ငန်းစဉ်ကိုပိုမိုထိရောက်စေရန်သေချာစေရန်သေချာစေနိုင်သည်။
Live Chat စနစ်များသို့မဟုတ်အွန်လိုင်းဂိမ်းများသို့မဟုတ်အွန်လိုင်းဂိမ်းများကဲ့သို့သောအချက်အလက်များဖြန့်ချိခြင်းနှင့်ဆက်စပ်သောအရင်းအမြစ်များကိုဖြန့်ချိရန်အချက်အလက်များကိုဖြန့်ချိပြီးသည့်နောက်တွင် stream_socket_shutdowns အချို့အတွက် stream_socket_shutdownS ကို များသောအားဖြင့်ခေါ်ဆိုကြသည်။ connection ကိုပိတ်ရန် stream_shut_rdwr ကို သုံးပါ။
နမူနာကုဒ်:
<span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://example.com:12345"</span></span><span>);
</span><span><span class="hljs-comment">// နှစ်လမ်းသွားဒေတာဖလှယ်မှုလုပ်ဆောင်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-string">"Hello Server!"</span></span><span>);
</span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fread</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span>);
</span><span><span class="hljs-comment">// နှစ်လမ်းသွားဆက်သွယ်မှုပြီးဆုံးပြီးနောက်ဆက်သွယ်မှုကိုလုံးဝပိတ်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_socket_shutdown</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, STREAM_SHUT_RDWR);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>);
</span></span>
ယခုအချိန်တွင်နှစ်ဖက်စလုံးသည်အပြန်အလှန်ဆက်သွယ်မှုကိုဆက်လက်မလိုအပ်တော့ပါ။ Socket Connection လုံးဝပိတ်ထားရန်သေချာစေရန်ဖတ်ရန်နှင့်စစ်ဆင်ရေးများကိုပိတ်ရန် stream_socket_shutdown ကို ဖုန်းဆက်ပါ။
အထူးဖြစ်ရပ်များတွင်ပုံမှန်မဟုတ်သောပြတ်တောက်ခြင်းသို့မဟုတ်အမှားကြောင့်ကွန်ယက်ဆက်သွယ်မှုကိုပိတ်ထားနိုင်သည်။ Socket ၏ Shutdown Process ကိုပိုမိုကောင်းမွန်စွာထိန်းချုပ်ရန် stream_socket_shutdown ကို သုံးပါ။ ဥပမာအားဖြင့်ကွန်ယက်ပြတ်တောက်ခြင်းသို့မဟုတ်လျှောက်လွှာခြွင်းချက်တစ်ခုဖြစ်ပါကသယံဇာတများဆက်လက်နေထိုင်ရန်အတွက်ဖတ်ရှုခြင်းသို့မဟုတ်ရေးခြင်းစစ်ဆင်ရေးကိုပယ်ဖျက်နိုင်သည်။
နမူနာကုဒ်:
<span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://example.com:80"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$socket</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Unable to connect to server"</span></span><span>);
}
</span><span><span class="hljs-comment">// အမှားအယွင်းများဖြစ်ပေါ်လာသည်ဟုယူဆ,ဒေတာ၏အရေးအသားကိုရပ်တန့်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_socket_shutdown</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, STREAM_SHUT_WR);
</span><span><span class="hljs-comment">// အမှားမက်ဆေ့ခ်ျကိုဆက်လက်ဖတ်ရှုပါသို့မဟုတ်အသုံးပြုသူအားအကြောင်းကြားရန်ဆက်လက်</span></span><span>
</span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fread</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>);
</span></span>
ဤနေရာတွင်ချွင်းချက်တစ်ခုသို့မဟုတ်အမှားတစ်ခုဖြစ်ပေါ်သောအခါကျွန်ုပ်တို့သည်ဆာဗာပေါ်ရှိသက်ရောက်မှုကိုဖြေရှင်းခြင်းအားဖြင့်ဆာဗာပေါ်ရှိသက်ရောက်မှုကိုလျှော့ချရန်အချက်အလက်များကိုရေးရန်နောက်ထပ်ကြိုးစားခြင်းကိုရှောင်ရှားနိုင်သည်။
အချို့သော applications အချို့သည်အချိန်ကြာမြင့်စွာတုံ့ပြန်သည့်အခါ socket connection ကိုတက်ကြွစွာပိတ်ပစ်ရန် socket connection ကိုတက်ကြွစွာပိတ်ထားရန်လိုအပ်နိုင်သည်။ ဤကိစ္စတွင် stream_socket_shutdown ကို မလိုအပ်တော့သောဆက်သွယ်မှုများကိုပိတ်ရန်အသုံးပြုနိုင်သည်။
နမူနာကုဒ်:
<span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://example.com:80"</span></span><span>, </span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$socket</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Unable to connect: <span class="hljs-subst">$errstr</span></span></span><span> (</span><span><span class="hljs-subst">$errno</span></span><span>)");
}
</span><span><span class="hljs-comment">// အချိန်ကုန်ယန္တရားကိုသတ်မှတ်ပါ,အချိန်ကုန်ပြီးနောက်ဆက်သွယ်မှုကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">stream_set_timeout</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>); </span><span><span class="hljs-comment">// အချိန်ကုန်အချိန်ကိုသတ်မှတ်ပါ10စက်ဏန့်</span></span><span>
</span><span><span class="hljs-variable">$response</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fread</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-number">1024</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">feof</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Connection timed out or completed.\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">stream_socket_shutdown</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, STREAM_SHUT_RDWR);
}
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>);
</span></span>
ဤဥပမာတွင် 10 စက္ကန့်အတွင်းဆက်သွယ်မှုကိုမတုံ့ပြန်ပါက connection ကိုပိတ်ရန် Steam_socket_shutdown ကို ဖုန်းဆက်ပါလိမ့်မည်။
Stream_socket_shutdown သည် Socket connection closure ကိုထိန်းချုပ်နိုင်သည့် PHP တွင်အလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်းသည်တစ်လမ်းသွားဆက်သွယ်ရေးတွင်ပါ 0 င်ခြင်း,