အလွန်အမင်းတစ်ပြိုင်နက်တည်းကွန်ယက်အက်ပလီကေးရှင်းများတွင် connection pooling သည်များသောအားဖြင့်အသုံးပြုသော optimization နည်းလမ်းဖြစ်သည်။ ၎င်းသည်ဆက်သွယ်မှုများကိုမကြာခဏဖျက်ဆီးခြင်းနှင့်ဖျက်ဆီးခြင်းကိုလျှော့ချခြင်း, ဖျက်ဆီးခြင်းနှင့်လျှောက်လွှာစွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်။ သို့သော် Connection Pool ရှိဆက်သွယ်မှုများမှာအမြဲတမ်းမရရှိနိုင်ပါ။
ဤဆောင်းပါးသည် Connection Pool တွင်မရရှိနိုင်သည့် society connection များရှာဖွေတွေ့ရှိရန် Socket_clear_Error () function ကို PHP တွင်မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
ပုံမှန်အားဖြင့် Connection pool သည် Open Socket connection များအစုတခုကိုထိန်းသိမ်းထားသည်။ မကြာခဏဆက်သွယ်မှုတည်ဆောက်ခြင်း၏ကုန်ကျစရိတ်ကိုရှောင်ရှားရန်ဤဆက်သွယ်မှုများကိုပြုလုပ်သည်။ သို့သော်ကွန်ယက်သည်မတည်ငြိမ်သောသို့မဟုတ်ဆာဗာကိုပုံမှန်မဟုတ်သောအခါအချို့သောဆက်သွယ်မှုများသည်ကျရှုံးနိုင်သည်။ အကယ်. အချိန်မီရှာဖွေတွေ့ရှိခြင်းနှင့်မလုပ်ဆောင်ပါကဤ "သေလွန်သောသူတို့ကို" အသုံးပြုခြင်းသည်တောင်းဆိုမှုကိုပျက်ပြားစေပြီးစီးပွားရေးအပေါ်အကျိုးသက်ရောက်စေလိမ့်မည်။
ရိုးရာချဉ်းကပ်နည်းသည်ဆက်သွယ်မှုကိုအသုံးမပြုမီဆက်သွယ်မှုကိုဆက်လက်လုပ်ဆောင်ခြင်းရှိမရှိစစ်ဆေးရန်အတွက် HeartBeat ကိုစစ်ဆေးရန်သို့မဟုတ်စစ်ဆေးရန်တောင်းဆိုခြင်းဖြစ်သည်။ အခြားစိတ်ကူးတစ်ခုမှာ Socket ရှိအမှားအယွင်းကိုရှာဖွေရန် PHP ၏ Socket_Clock_Error () function ကိုအသုံးပြုရန်ဖြစ်သည်။
Socket_Close_Error () သည် Socket Error Status ကိုရှင်းလင်းရန် PHP socket extension တွင် function တစ်ခုဖြစ်သည်။ ၎င်းသည်လက်ရှိ socket ပေါ်တွင်အမှားကုဒ်ကိုပြန်ပို့ပြီးအသုံးပြုပြီးနောက်အမှားအယွင်းကိုရှင်းလင်းလိမ့်မည်။ ပြန်လာသောအမှားကုဒ်ကို အခြေခံ. Socket သည်ပုံမှန်ဟုတ်မဟုတ်ဆုံးဖြတ်နိုင်သည်။
function ကိုလက်မှတ်ရေးထိုးပုံဥပမာမှာအောက်ပါအတိုင်းဖြစ်သည် -
int socket_clear_error(resource $socket)
Value ကိုပြန်သွားပါ
0: socket ထဲမှာအမှားမရှိဘူးဆိုတာကိုပြသထားတယ်။
Non-0 Integer - socket error error rotrics rocks or connection ကိုမရရှိနိုင်ကြောင်းဖော်ပြသည်။
အောက်ပါအချက်များသည် Socket_Close_ERRORERRORERRORE () ကို မည်သို့အသုံးပြုရမည်ကိုရှင်းပြသည့်နမူနာကုဒ်ဖြစ်သည်။
<?php
class SocketConnectionPool {
private $pool = [];
public function __construct($size = 5) {
for ($i = 0; $i < $size; $i++) {
$this->pool[] = $this->createConnection();
}
}
private function createConnection() {
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, 'm66.net', 80);
return $socket;
}
// ဆက်သွယ်မှုတရားဝင်မှုရှိမရှိစစ်ဆေးပါ
private function isSocketHealthy($socket) {
$errorCode = socket_clear_error($socket);
return $errorCode === 0;
}
// ဆက်သွယ်မှုရေကူးကန်မှကျန်းမာဆက်သွယ်မှုကိုရယူပါ
public function getConnection() {
foreach ($this->pool as $key => $socket) {
if ($this->isSocketHealthy($socket)) {
return $socket;
} else {
// ဆက်သွယ်မှုမရရှိနိုင်ပါ,အနီးကပ်နှင့်အစားထိုးလိုက်ပါ
socket_close($socket);
$this->pool[$key] = $this->createConnection();
return $this->pool[$key];
}
}
// ဆက်သွယ်မှုမရှိပါက,အသစ်တစ်ခုကိုဖန်တီးပါ
$newSocket = $this->createConnection();
$this->pool[] = $newSocket;
return $newSocket;
}
public function closeAll() {
foreach ($this->pool as $socket) {
socket_close($socket);
}
$this->pool = [];
}
}
// အသုံးပြုမှုဥပမာ
$pool = new SocketConnectionPool(3);
$socket = $pool->getConnection();
if ($socket) {
$request = "GET / HTTP/1.1\r\nHost: m66.net\r\nConnection: Close\r\n\r\n";
socket_write($socket, $request, strlen($request));
$response = socket_read($socket, 2048);
echo $response;
}
$pool->closeAll();
?>
Connection Pool Initialization <br> <br> constructor အတွက် socket connections မျိုးစုံကိုဖန်တီးပြီး connection pool ကိုအစပြုပါ။
ဆက်သွယ်မှုကျန်းမာရေးကို detect
Socket_clear_Error () Call Socket_clear_Error () Call of Socket_clear_Error () ကိုခေါ်ဆိုပါ။ 0 သည်ဆက်သွယ်မှုသည်ပုံမှန်ဖြစ်သည်ဟုဆိုလိုသည်။
ဆက်သွယ်မှုကိုရယူပါ
GetConnection () ဆက်သွယ်မှုရေကူးကန်ကိုဖြတ်သန်း။ မရရှိနိုင်သည့်ဆက်သွယ်မှုကိုကြုံတွေ့ရသောအခါ connection ဟောင်းကိုပိတ်ပြီးပြန်လာသောဆက်သွယ်မှုသည်ကျန်းမာစေရန်သေချာစေရန်အခြားရွေးချယ်စရာဆက်သွယ်မှုအသစ်တစ်ခုကိုဖန်တီးပါ။
ဆက်သွယ်မှုပိတ် <br> <br> မလိုအပ်သည့်အခါအရင်းအမြစ်များကို Call Inloall () အရင်းအမြစ်များကိုအနီးကပ်ဖြန့်ချိရန်။
Socket_Close_Error () ကိုအသုံးပြုခြင်း () socket connection များအမှားအယွင်းများကိုလျင်မြန်စွာရှာဖွေတွေ့ရှိနိုင်သည်။ Connection Pool Design နှင့်ပေါင်းစပ်ပြီး၎င်းသည်မရရှိနိုင်သောဆက်သွယ်မှုများကိုထိရောက်စွာရှာဖွေတွေ့ရှိနိုင်ပြီးလျှောက်လွှာတည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
အမှန်တကယ်စီမံကိန်းများအနေဖြင့်ပိုမိုခိုင်မာသည့် connection pool စီမံခန့်ခွဲမှုဖြေရှင်းချက်ကိုနှလုံးရောဂါရှာဖွေတွေ့ရှိမှုနှင့်အချိန်ကုန်ထိန်းချုပ်မှုစသည့်ယန္တရားများနှင့်ပေါင်းစပ်။ တည်ဆောက်နိုင်သည်။ PHP ရှိ Socket Connection Pools များအတွက်ကျန်းမာရေးစစ်ဆေးမှုများကိုနားလည်ရန်ဤဆောင်းပါးကသင့်အားကူညီပေးပါ။