ရရှိနိုင်သည့်ကွန်ယက် 0 န်ဆောင်မှုများတည်ဆောက်သည့်အခါ PHP မှပေးသော socket functions များသည် developer များကိုခိုင်မာသည့်ထိန်းချုပ်မှုစွမ်းရည်ဖြင့်ပြုလုပ်သည်။ Socket_set_block () သည် mode ကိုပိတ်ဆို့ရန် socket ကို socket လုပ်ရန် socket တစ်ခုချမှတ်ရန် socket ကို set socket ကို set socket socket ကိုသတ်မှတ်ရန်, ကျိုးကြောင်းဆီလျော်သောအချိန်ကုန်ခြင်းယန္တရားနှင့်အတူကျွန်ုပ်တို့သည်ခိုင်မာသောနှင့်အလားတူမြင့်မားသောဆက်သွယ်မှုစီမံခန့်ခွဲမှုဖြေရှင်းချက်ကိုတည်ဆောက်နိုင်သည်။
PHP ၏ socket နှင့်ပရိုဂရမ်ရေးဆွဲစဉ်ပိတ်ဆို့ခြင်းနှင့်ပိတ်ဆို့ခြင်းမဟုတ်သော modes များ၏အပြုအမူတွင်မရှိမဖြစ်လိုအပ်သောကွဲပြားခြားနားမှုများရှိသည်။
Blocking Mode - စာဖတ်ခြင်းသို့မဟုတ်ရေးခြင်းလုပ်ငန်းစဉ်အတွင်းဒေတာသို့မဟုတ်ဆက်သွယ်မှုမရှိပါကအခြေအနေကိုဖြည့်ဆည်းသည်အထိပရိုဂရမ်သည် "စောင့်ဆိုင်း" လိမ့်မည်။
ပိတ်ဆို့ခြင်းမဟုတ်သော mode : စစ်ဆင်ရေးသည်ချက်ချင်းပြန်လာပြီးမစောင့်ပါ။ ဤအချက်သည် developer များနှင့်ဆက်သွယ်မှုအခြေအနေ, အချက်အလက်ပြင်ဆင်မှုစသဖြင့်အသေးစိတ်အချက်အလက်များကိုစီမံခန့်ခွဲရန်လိုအပ်သည်။
Socket_set_set_block () ၏ function သည် socket_read () သို့မဟုတ် socket_write () () () () () () () () သို့မဟုတ် socket_write () ()) ကိုပိတ်ဆို့ရန် mode ကိုပိတ်ဆို့ရန် socket ကိုအတိအလင်း socket သို့အတိအလင်းသတ်မှတ်ရန်ဖြစ်သည်။
မြင့်မားသောရရှိနိုင်သည့်ဆက်သွယ်မှုယန္တရားသည်အောက်ပါလက္ခဏာများရှိသင့်သည်။
ဆက်သွယ်မှုအချိန်မီရောက်ရှိနိုင်မလားရှာဖွေတွေ့ရှိနိုင်သည်။
ပိတ်ဆို့ခြင်းကြောင့်ပရိုဂရမ်၏ရေရှည်ချိတ်ဆက်မှုကိုရှောင်ပါ။
ဆာဗာသို့မဟုတ်ကွန်ယက်ပြ problems နာများအရလျင်မြန်စွာပြောင်းပါသို့မဟုတ်ထပ်မံကြိုးစားပါ။
ကျိုးကြောင်းဆီလျော်သယံဇာတထုတ်လွှတ်မှုနှင့်ခြွင်းချက်ကိုင်တွယ်။
ယခုအချိန်တွင်အချိန်ကုန်ချိန်ညှိခြင်းနှင့်ပေါင်းစပ်ထားသောပိတ်ဆို့ခြင်းသည်အထူးသဖြင့်အရေးပါသည်။ PHP သည် socket_set_set_option () function ကိုထောက်ပံ့ပေးသည်။
အောက်ဖော်ပြပါသည်ပုံမှန်အကောင်အထည်ဖော်မှုယုတ္တိဗေဒတစ်ခုဖြစ်သည်။ အောက်ပါအတိုင်းဖြစ်သည်။
socket တစ်ခုဖန်တီး;
အချိန်ကုန်အချိန်ကိုသတ်မှတ်ပါ။
mode ကိုပိတ်ဆို့ရန်သတ်မှတ်;
ချိတ်ဆက်ရန်ကြိုးစားပါ။
ဆက်သွယ်မှုအခြေအနေကိုစစ်ဆေးပါ။
ပုံမှန်ဖတ်ရှုခြင်းနှင့်ရေးခြင်းသို့မဟုတ်အချိန်ကုန် processing ။
နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
$host = 'gitbox.net';
$port = 80;
// ဖန်တီး socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("socket_create() failed: " . socket_strerror(socket_last_error()));
}
// connection timeout အချိန်သတ်မှတ်ပါ(စက္ကန့်)
$timeout = ['sec' => 5, 'usec' => 0];
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, $timeout);
socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, $timeout);
// mode ကိုပိတ်ဆို့ဖို့သတ်မှတ်ထားပါ
socket_set_block($socket);
// ဆက်သွယ်မှုကိုအစပြုပါ
$result = @socket_connect($socket, $host, $port);
if ($result === false) {
$errorCode = socket_last_error($socket);
$errorMsg = socket_strerror($errorCode);
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: [$errorCode] $errorMsg\n";
socket_close($socket);
exit;
}
// အောင်မြင်သောဆက်သွယ်မှုပြီးနောက်တောင်းဆိုမှုကိုပေးပို့ပါ
$request = "GET / HTTP/1.1\r\nHost: gitbox.net\r\nConnection: Close\r\n\r\n";
socket_write($socket, $request, strlen($request));
// တုံ့ပြန်မှုကိုဖတ်ပါ
$response = '';
while ($chunk = socket_read($socket, 2048)) {
$response .= $chunk;
}
echo "ဆာဗာတုံ့ပြန်မှု:\n$response";
socket_close($socket);
?>
Socket_set_Option () ဖတ်ရန်အချိန်ကို configulate လုပ်ပါ။ အကယ်. ပစ်မှတ်ထားသောအိမ်ရှင်သည်တုံ့ပြန်မှုမရှိပါက၎င်းသည်အကန့်အသတ်မရှိပိတ်ဆို့လိမ့်မည်မဟုတ်ပါ။
Socket_set_Stock () သည်စာဖတ်ခြင်းနှင့်ရေးခြင်းများကို sequential logic နှင့်လိုက်လျောညီထွေဖြစ်အောင်လုပ်ခြင်းနှင့်မကြာခဏမဲရုံများမလိုအပ်ပါ။
Socket_Connect (), အထူးသဖြင့် Socket_Connect () , အထူးသဖြင့် Socket_Connect () ကိုလိုက်နာသင့်သည်။
ဤချဉ်းကပ်နည်းသည် TCP ကွန်ယက်တောင်းဆိုမှုများအပါအ 0 င် -
HTTP interface ကိုနှလုံးခုန်ခြင်း,
Intranet ဝန်ဆောင်မှုအခြေအနေစောင့်ကြည့်လေ့လာခြင်း,
အကြား node ကျန်းမာရေးစစ်ဆေးမှုများဖြန့်ဝေ;
ရိုးရိုးဝန်ကြိုတင်ထောက်လှမ်းရေး Balancing ။
၎င်း၏အားသာချက်မှာ၎င်းသည်ရိုးရှင်းသောအောင်မြင်မှုရရှိစေရန်, ရှင်းလင်းသောထိန်းချုပ်မှုရှိသည်။ ၎င်းသည် scripted အလိုအလျောက်လုပ်ငန်းတာဝန်များသို့မဟုတ်ပေါ့ပါးသော 0 န်ဆောင်မှုများအတွက်သင့်တော်သည်။
socket_set_set_block () ကိုသင့်တော်သောအချိန်ကုန်ခြင်းယန္တရားနှင့်အတူကွန်ယက်ဆက်သွယ်မှုကိုကိုင်တွယ်သောအခါ php ပိုမိုခံနိုင်ရည်နှင့်အမှားသည်းခံနိုင်သည်။ အထူးသဖြင့်ယုံကြည်စိတ်ချရမှုလိုအပ်ချက်များကိုမြင့်မားသောပတ်ဝန်းကျင်တွင်အပြုအမူနှင့်အချိန်ကုန်ဆုံးသောနည်းဗျူဟာများကိုဖွဲ့စည်းခြင်းကိုဆင်ခြင်တုံတရားထိန်းချုပ်ခြင်းသည်အလွန်အမင်းရရှိနိုင်သည့်စနစ်တစ်ခုကိုတည်ဆောက်ရန်မရှိမဖြစ်လိုအပ်သည်။ အထက်ပါကုဒ်များနှင့်အတွေးအခေါ်များမှတစ်ဆင့်သင်အမှန်တကယ်လိုအပ်ချက်များအပေါ် အခြေခံ. ပိုမိုအပြည့်အဝ connection pool, retry ယန္တရားသို့မဟုတ် 0 န်ဆောင်မှုစောင့်ကြည့်လေ့လာရေးစနစ်ကိုတည်ဆောက်နိုင်သည်။