ကွန်ယက်ပရိုဂရမ်တွင်တည်ငြိမ်သောဆက်သွယ်မှုကိုထိန်းသိမ်းရန်အလွန်အရေးကြီးသည်, အထူးသဖြင့်ဖောက်သည်သည်ဆာဗာနှင့်ဆက်သွယ်သည့်အခါ။ PHP သည် Socket_Close_Error () သည်အတော်လေးဂရုမစိုက်သော်လည်းအလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်များကို PHP သည် Socket opertion function များကိုပေါင်းစပ်ထားပါသည်။ ကွန်ယက်ဆက်သွယ်မှုတည်ငြိမ်မှုကိုတိုးတက်စေရန် loop connection retry ယန္တရားကိုအကောင်အထည်ဖော်ရန် Socket_Close_Error () function ကိုမည်သို့အသုံးပြုရမည်ကိုဤဆောင်းပါးကအသေးစိတ်ဖော်ပြထားသည်။
The Socket_Close_Error () function ကိုသတ်မှတ်ထားသော socket ၏အမှားအယွင်းကိုရှင်းလင်းရန်အသုံးပြုသည်။ Socket တွင်အမှားတစ်ခုဖြစ်ပေါ်သောအခါအမှားအယွင်းများကိုဆက်လက်ထိန်းသိမ်းထားပြီးနောက်ဆက်တွဲစစ်ဆင်ရေးကိုထိခိုက်စေလိမ့်မည်။ ဒီ function ကိုဖုန်းခေါ်ဆိုခြင်းကအမှားအယွင်းကိုပြန်လည်စတင်နိုင်အောင် Socket ကိုပုံမှန်အသုံးပြုနိုင်ရန်ဆက်လက်အသုံးပြုနိုင်သည်။
function ရှေ့ပြေးပုံစံ:
bool socket_clear_error ( resource $socket )
Parametermer
$ socket : အမှားအယွင်းအရင်းအမြစ်ကိုရှင်းလင်းဖို့။
Value ကိုပြန်သွားပါ
အောင်မြင်လျှင် အောင်မြင် ပါက အယူမှား မအောင်မြင်ပါကပြန်ပို့ပါ။
ကွန်ယက်ပတ် 0 န်းကျင်တွင်ဆက်သွယ်မှုပြတ်တောက်ခြင်းသို့မဟုတ်ပြတ်တောက်ခြင်းများသည်အထူးသဖြင့်ကွန်ယက်အတက်အကျများ, အလုပ်များသောဆာဗာများစသည်တို့ကြောင့်ပုံမှန်မဟုတ်သောကြောင့်ဖြစ်သည်။
socket အရင်းအမြစ်တစ်ခုဖန်တီးပါ။
ဆာဗာကိုချိတ်ဆက်ရန်ကြိုးစားပါ။
အကယ်. ဆက်သွယ်မှုသည်အမှားအယွင်းကိုရှင်းလင်းရန် Socket_clear_Error () ကိုခေါ်ဆိုပါ။
ခဏစောင့်ပါ။ အောင်မြင်မှုအမြင့်ဆုံးသို့မဟုတ်အများဆုံးပြန်လည်နေရာချထားသည်အထိဆက်သွယ်မှုကိုထပ်မံကြိုးစားပါ။
<?php
$maxRetries = 5; // ပြန်လည်ကြိုးစားမှုအများဆုံးအရေအတွက်
$retryInterval = 2; // တစ်ခုချင်းစီကိုပြန်ကြိုးစားမှုအကြားစက္ကန့်အရေအတွက်
$attempt = 0;
$host = "m66.net"; // Target Domain Name
$port = 80; // ဆိပ်ကမ်းဆိပ်ကမ်း
while ($attempt < $maxRetries) {
$attempt++;
// ဖန်တီး TCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "ဖန်တီးsocketဆုံးရှုံး: " . socket_strerror(socket_last_error()) . "\n";
break;
}
// ချိတ်ဆက်ရန်ကြိုးစားပါ
$result = @socket_connect($socket, $host, $port);
if ($result === false) {
echo "1 ။ {$attempt} 次连接ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n";
// ရှင်းလင်းသော socket အမှားအယွင်း
socket_clear_error($socket);
// လက်ရှိပိတ်ပါ socket,ထပ်ကြိုးစားရန်အဆင်သင့်
socket_close($socket);
// နောက်တဖန်မကြိုးစားမီခဏစောင့်ပါ
sleep($retryInterval);
} else {
echo "အောင်မြင်စွာဆက်သွယ်မှု!\n";
// ဤတွင်သင်နောက်ဆက်တွဲဆက်သွယ်ရေးလုပ်ငန်းများလုပ်ဆောင်နိုင်ပါသည်
socket_close($socket);
break;
}
}
if ($attempt == $maxRetries) {
echo "达到ပြန်လည်ကြိုးစားမှုအများဆုံးအရေအတွက်,连接ဆုံးရှုံး。\n";
}
?>
Socket Create : Socket_create () ကို အသုံးပြု. TCP Socket ကိုဖန်တီးပါ။
ဆာဗာနှင့်ချိတ်ဆက်ခြင်း - Socket_Connect () သည် သတ်မှတ်ထားသောဒိုမိန်းအမည်နှင့် port ကိုချိတ်ဆက်ထားသည်။ ဤနေရာတွင် Domain Name သည်လိုအပ်ချက်များနှင့်ကိုက်ညီသော M66.net သို့သတ်မှတ်သည်။
အမှားကိုင်တွယ်ခြင်း - ဆက်သွယ်မှုမအောင်မြင်သောအခါအသေးစိတ်အချက်အလက်များကို Socket_Strent_Stror () ကိုရှာဖွေသည်။
ရှင်းလင်းသောအမှား - နောက်ဆက်တွဲကြိုးပမ်းမှုများတွင် Socket သည် ယခင်အမှားများကြောင့်မထိခိုက်ပါ။
Retry ယန္တရား - ရှုံးနိမ့်မှုတစ်ခုစီပြီးနောက်အချိန်ကာလတစ်ခုအတွင်း loop သည်ဆက်သွယ်မှုအရေအတွက်နှင့်ခေတ္တဆိုင်းငံ့ထားမှုကိုထိန်းချုပ်သည်။
အရင်းအမြစ်ဖြန့်ချိမှု - သယံဇာတအရင်းအမြစ်ယိုစိမ့်မှုကိုကာကွယ်ရန်ပျက်ကွက်ပြီးနောက် socket ကိုပိတ်ပါ။