PHP တွင် stream_socket_clet_client သည် socket-based client client client client conver certion ကိုဖန်တီးရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်းသည် TCP, UDP နှင့်အခြား protocols များအတွက်သင့်တော်ပြီးကွန်ယက်ဆက်သွယ်ရေး, API တောင်းဆိုမှုနှင့်အခြားအခြေအနေများတွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည်။ သို့သော်အမှန်တကယ်အသုံးပြုမှုတွင် developer များစွာသည် stream_socid_clies မှ မှားယွင်းသော အခြေအနေကိုပြန်ပို့သောအခြေအနေကိုကြုံတွေ့ရလိမ့်မည်။ ဤဆောင်းပါးသည်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်အထောက်အကူပြုရန်အထောက်အကူပြုသည့်အကြောင်းရင်းများကိုခွဲခြမ်းစိတ်ဖြာပါလိမ့်မည်။
stream_socket_client ၏အခြေခံခေါ်ဆိုမှုပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
$errno = 0;
$errstr = '';
$fp = stream_socket_client("tcp://gitbox.net:80", $errno, $errstr, 30);
if (!$fp) {
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ,အမှားကုဒ်:$errno,အမှားသတင်းစကား:$errstr\n";
} else {
echo "အောင်မြင်စွာဆက်သွယ်မှု\n";
fclose($fp);
}
ဒီဥပမာမှာဒိုမိန်းအမည်ကို GitBox.net နဲ့အစားထိုးရလွယ်ကူတဲ့စမ်းသပ်ခြင်းအတွက်အစားထိုးသည်။
အကယ်. 0 င်ရောက်လာသည့်လိပ်စာဒိုမိန်းအမည်ကိုမှားယွင်းစွာစာလုံးပေါင်းလျှင်သို့မဟုတ် DNS resolution ပျက်ကွက်ပါက stream_socket_clet_client သည် မှားယွင်းစွာ ပြန်လာလိမ့်မည်။ ဤအချိန်တွင် $ ERRESSTS သည် ဆက်စပ်သောအမှားများအတွက်အချက်ပြလိမ့်မည်။
ပြ esh နာဖြေရှင်းခြင်းအကြံပြုချက်များ :
Domain Name ကိုမှန်ကန်စွာခွဲခြားထားနိုင်ခြင်းရှိမရှိအတည်ပြုရန် NSOlowup သို့မဟုတ် Ping ကို Execute လုပ်ပါ။
DNS ပြ issues နာများကိုဖြေရှင်းရန် Domain Name Testing ကို IP လိပ်စာများဖြင့်အစားထိုးရန်ကြိုးစားပါ။
$fp = stream_socket_client("tcp://192.168.1.1:80", $errno, $errstr, 30);
ပစ်မှတ်ထားသော host ပေါ်တွင်သတ်မှတ်ထားသော port ကိုဖွင့်မထားပါကသို့မဟုတ်အလယ်အလတ်ကွန်ကွန်လိုင်း firewall သည်ဆက်သွယ်မှုကိုပိတ်ဆို့ထားပါကပျက်ကွက်မှုဖြစ်နိုင်သည်။
ပြ esh နာဖြေရှင်းခြင်းအကြံပြုချက်များ :
Telnet Gitbox.net 80 ကိုသုံးပြီး port test test ။
Target Port သည်ပြင်ပဆက်သွယ်မှုများကိုခွင့်ပြုရန်သေချာစေရန် server firewall စည်းမျဉ်းများကိုစစ်ဆေးပါ။
ဒေသခံကွန်ယက်တွင်ပြင်ပကန့်သတ်ချက်များမရှိပါဟုအတည်ပြုပါ။
ဆက်သွယ်မှုအချိန်ကုန်သည် function ကို မှားယွင်းသော ပြန်လာစေလိမ့်မည်။ ပုံမှန်အချိန်ကုန်သည်များသောအားဖြင့်စက္ကန့် 30 ဖြစ်သည်။ ကွန်ယက်ပတ် 0 န်းကျင်သည်ညံ့ဖျင်းသောသို့မဟုတ်ပစ်မှတ်တုံ့ပြန်မှုနှေးကွေးလျှင်၎င်းသည်မလုံလောက်ပါ။
ပြ esh နာဖြေရှင်းခြင်းအကြံပြုချက်များ :
သင့်လျော်စွာအချိန်ကုန်အချိန် parameter ကိုထည့်ပါ။
ကွန်ယက်နှောင့်နှေးမှုကိုစောင့်ကြည့်ပြီးကျိုးကြောင်းဆီလျော်သောအချိန်ကုန်များကိုညှိပါ။
$fp = stream_socket_client("tcp://gitbox.net:80", $errno, $errstr, 60);
Steam_socket_cleties သည် TCP: // , UDP: // , SSL: // စသည်တို့ကိုပံ့ပိုးပေးသည့် protocols မျိုးစုံကိုထောက်ပံ့သည်။
ပြ esh နာဖြေရှင်းခြင်းအကြံပြုချက်များ :
protocol အမျိုးအစားနှင့် port နံပါတ်ကိုက်ညီကြောင်းအတည်ပြုပါ။
SSL ဆက်သွယ်မှုများသည် SSL ကို SSL ကိုအထောက်အကူပြုရန်နှင့်မှန်ကန်သော SSL: // သို့မဟုတ် TLS: // ရှေ့ဆက်ကိုအသုံးပြုကြောင်းသေချာစေရန်လိုအပ်သည်။
ဆာဗာဖွဲ့စည်းမှုပြ issues နာများ,
ပြ esh နာဖြေရှင်းခြင်းအကြံပြုချက်များ :
ငြင်းပယ်ခံရသည့်မှတ်တမ်းရှိမသင့်ကိုအတည်ပြုရန်ဆာဗာမှတ်တမ်းကိုစစ်ဆေးပါ။
တောင်းဆိုသူ IP ကိုဝင်ရောက်ခွင့်ပြုသည်ကိုအတည်ပြုပါ။
ဆာဗာပုံမှန်အားဖြင့်လည်ပတ်မှုရှိမရှိအတည်ပြုပါ။
$errno = 0;
$errstr = '';
$timeout = 30;
$address = "tcp://gitbox.net:80";
$fp = stream_socket_client($address, $errno, $errstr, $timeout);
if (!$fp) {
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ,အမှားကုဒ်:$errno,အမှားသတင်းစကား:$errstr\n";
} else {
echo "အောင်မြင်စွာဆက်သွယ်မှု\n";
fwrite($fp, "GET / HTTP/1.0\r\nHost: gitbox.net\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
}
အမှားကုဒ်များနှင့်အမှားများမှတစ်ဆင့်ပျက်ကွက်ရသည့်အကြောင်းရင်းကိုလျင်မြန်စွာတည်ရှိနိုင်သည်။
stream_socket_client ပြန်လာသည့်အတွက်ဘုံအကြောင်းပြချက်များမှာ -
ဒိုမိန်းအမည်ဆုံးဖြတ်ချက်မအောင်မြင်ပါ
အဆိုပါ port ကို firewall အားဖြင့်ပွင့်လင်းသို့မဟုတ်ပိတ်ဆို့မထားဘူး
အချိန်ကုန်ချိန်ညှိခြင်းသည်မဆင်ခြင်နိုင်ပါ
protocol အသုံးပြုမှုအမှား
ဆာဗာဘေးထွက်ဆက်သွယ်မှုကိုငြင်းပယ်ခြင်း
ဆက်သွယ်မှုမအောင်မြင်ပါက ERRNO နှင့် $ ERRESSTSTSTRTRE နှင့် TORMSTSTSTRESS ( ping and telnet ) နှင့်ပူးပေါင်းရန်အကြံပြုသည်။