PHP နှင့် PHP နှင့် PHP နှင့်ပရိုဂရမ်ရှိသည့် socket တွင် developer များသည်တစ်ခါတစ်ရံခေါ်ဆိုမှု socket_set_scblock () socket_set_set_set_set_set_set_set_set_set_set_set_set_set_set_set_sclock () ကိုကြုံတွေ့ရသည်။ ဒီအခြေအနေအတွက်အကြောင်းပြချက်များစွာရှိကောင်းရှိနိုင်ပါတယ်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်မှုသည် "မမှန်ကန်" ခြင်းနှင့်သက်ဆိုင်ရာပြ troubl နာဖြေရှင်းခြင်းအကြံပြုချက်များပေးသည့်ဤဆောင်းပါးသည်လေ့လာသုံးသပ်ခြင်းနှင့်သက်ဆိုင်သောပြ esh နာဖြေရှင်းခြင်းအကြံပြုချက်များကိုဖော်ပြပါမည်။
ပထမ ဦး စွာ socket_set_set_block () , socket_create () ကိုမခေါ်မီသေချာအောင်သေချာအောင်လုပ်ပါ။ parameter သည်အမှားများကြောင့် Socket ဖန်တီးမှုမအောင်မြင်ပါက Society System အရင်းအမြစ်များသို့မဟုတ်ခွင့်ပြုချက်မလုံလောက်ပါက Socket တွင်မလုံလောက်ပါကနောက်ဆက်တွဲလုပ်ဆောင်မှုများသည်သဘာဝကျကျအကျိုးသက်ရောက်မည်မဟုတ်ပါ။
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("Socket ဖန်တီးမှုပျက်ကွက်: " . socket_strerror(socket_last_error()));
}
socket_set_block($socket);
အမှားရှာဖွေတွေ့ရှိမှုကိုလျစ်လျူရှုထားခြင်းမရှိပါကထိုကဲ့သို့သောပြ problems နာများကိုဖြေရှင်းရန်ပထမခြေလှမ်းဖြစ်သည်။
အချို့ဖြစ်ရပ်များတွင် Socket Resourm ကိုပိတ်ထားနိုင်သည်သို့မဟုတ် socket_set_block () ဟုခေါ်သောအခါမမှန်ကန်သောပြည်နယ်တွင်ရှိသည်။ ဥပမာအားဖြင့်, ပိတ်ဆို့ခြင်း setting function ကိုခေါ်ဆိုခြင်းသည်ဝေးလံခေါင်ဖျားသောအိမ်ရှင်သည်ဆက်သွယ်မှုကိုပိတ်ပြီးနောက်တွင်အကျိုးသက်ရောက်မှုမရှိပါ။
သင် socket_get_status () ကို သုံးနိုင်သည်သို့မဟုတ်မမှန်ကန်တဲ့ပြည်နယ်တစ်ခုတွင်ပိတ်ဆို့ခြင်း mode ကိုရှောင်ရှားရန်သို့မဟုတ် connection status ကိုစောင့်ကြည့်နိုင်သည်။
PHP တွင် stream_socket_client () ကဲ့သို့သောလုပ်ဆောင်ချက်များကိုအရင်းအမြစ်များဖန်တီးရန်အသုံးပြုသည်။ ၎င်းသည်ရေတ်တုံးအရင်းအမြစ်များမဟုတ်ပါ။ ဤကိစ္စတွင် Socket_set_set_sclock () ကို ပိတ်ဆို့ခြင်း mode ကိုထိန်းချုပ်ရန်မသုံးနိုင်ပါ, သို့သော် stream_set_set_blocking () ကို သုံးသင့်သည်။
$stream = stream_socket_client("tcp://gitbox.net:80", $errno, $errstr, 30);
if (!$stream) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: $errstr ($errno)");
}
stream_set_blocking($stream, true); // မှန်ကန်သော blocking setup ကိုနည်းလမ်း
မတူညီသောအရင်းအမြစ်များနှင့်လုပ်ဆောင်မှုအမျိုးအစားများကိုရောစပ်ခြင်းသည်မအောင်မြင်ရသည့်အကြောင်းရင်းများအနက်မှတစ်ခုဖြစ်သည်။
အချို့သောစနစ်အကောင်အထည်ဖော်မှုများတွင် Socket_Connect () ခေါ်ဆိုမှုပြီးဆုံးသည်နှင့်တပြိုင်နက် Socket_set_Set_Stock () socket_set_block () setting ကိုဖြစ်ပေါ်စေနိုင်သည်။ အထူးသဖြင့်ပိတ်ဆို့ထားသောဆက်သွယ်မှုအခြေအနေများတွင် (ဥပမာအားဖြင့်၎င်းကို connection အတွက်ပိတ်ဆို့ခြင်းကိုပိတ်ဆို့ခြင်းမပြုလိုပါက) ၎င်းကိုပိတ်ဆို့ရန်သင်သတ်မှတ်လိုပါကချက်ချင်းအကျိုးသက်ရောက်စေလိုသည်။
socket_connect () ကို မခေါ်မီပိတ်ဆို့ခြင်း / ပိတ်ဆို့ခြင်း settings များကိုပိတ်ဆို့ခြင်းသို့မဟုတ် connection တည်ဆောက်ခြင်းဆိုင်ရာယုတ္တိဗေဒကိုပြန်လည်ဆန်းစစ်ရန်သေချာစေရန်အကြံပြုသည်။
အချို့သောစနစ်များတွင်အထူးသဖြင့်အချို့သောကန့်သတ်ထားသောကွန်တိန်နာများ, Selinux ချိန်ညှိချက်များသို့မဟုတ် Open_basedux ချိန်ညှိချက်များကဲ့သို့သောလုံခြုံစိတ်ချရသောပတ်ဝန်းကျင်တွင်အထူးကုသမှုများတွင်အထူးဂရုပြုမှုရှိသည်။ Socket_last_Error () နှင့်မှတ်တမ်းစောင့်ကြည့်လေ့လာခြင်းသည်ထိုကဲ့သို့သောပြ problems နာများကိုအတည်ပြုရန်ကူညီနိုင်သည်။
အကယ်. သင်သည်မမှန်ကန်သောပိတ်ဆို့ခြင်း settings များ (ဥပမာ - SWOSE ကဲ့သို့သော) correlopine frameworks (SWOSE) ကိုအသုံးပြုသောအခါမမှန်ကန်သောပိတ်ဆို့ခြင်းဆက်တင်များကြုံတွေ့ရပါကမူဘောင်များ encapher encaper လုပ်ခြင်းနှင့်ဇာတိ socket_set_scapblock () သည် အကျိုးသက်ရောက်မှုမယူနိုင်ပါ။ ဤအချိန်တွင်မူဘောင်မှပေးသော I / O ထိန်းချုပ်မှုနည်းလမ်းကိုကြည့်ပါ။
ဥပမာအားဖြင့် Php Php Function Socket function အစား $ socket-> setblocking (trust) ကို အသုံးပြုရန်အကြံပြုသည်။