PHP ပရိုဂရမ်တွင်ကွန်ယက်ဆက်သွယ်ရေးအတွက် sockets များကိုအသုံးပြုခြင်းသည်ဘုံလုပ်ငန်းဖြစ်သည်။ အထူးသဖြင့်ကျွန်ုပ်တို့သည် fsocckopen () function ကိုအသုံးပြုသောအခါသို့မဟုတ် TCP ဆက်သွယ်မှုကိုဖန်တီးသောအခါသို့မဟုတ် TCP ဆက်သွယ်မှုကိုဖန်တီးသောအခါကျွန်ုပ်တို့သည်များသောအားဖြင့်ကွန်ယက်နှောင့်နှေးမှုသို့မဟုတ်အခြားအကြောင်းပြချက်များကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုပိတ်ဆို့လေ့ရှိသည်။ ဤပိတ်ဆို့ခြင်းသည်သင်၏အစီအစဉ်သည်သင်၏အစီအစဉ်ကိုအခြားအလုပ်များကိုစောင့်ဆိုင်းနေစဉ်စနစ်၏တုန့်ပြန်မှုစွမ်းဆောင်ရည်ကိုဆက်လက်လုပ်ဆောင်နေစဉ်အတွင်းအခြားလုပ်ငန်းများကိုဆက်လက်လုပ်ဆောင်ခြင်းမှတားဆီးနိုင်သည်။ ကံကောင်းထောက်မစွာပင် PHP သည်ဤပြ problem နာကိုဖြေရှင်းရန်နှင့် Socket Blocking ကိုရှောင်ရှားရန် socket_set_timeout () function ကိုထောက်ပံ့ပေးသည်။
ကွန်ယက်ဆက်သွယ်မှုတွင်ပိတ်ဆို့ခြင်းဆိုသည်မှာအချို့သောစစ်ဆင်ရေးများပြီးဆုံးရန်စောင့်ဆိုင်းနေစဉ်အစီအစဉ်သည်အခြားကုဒ်ကိုဆက်လက်လုပ်ဆောင်ရန်မဖြစ်နိုင်ပါ။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည် socket မှတဆင့်တောင်းဆိုမှုကိုပေးပို့ပြီးတုန့်ပြန်မှုကိုစောင့်ဆိုင်းလျှင်, အစီအစဉ်သည်တုန့်ပြန်မှုမရမှီ, ရေရှည်ပိတ်ဆို့ခြင်းသည်လျှောက်လွှာ၏ထိရောက်မှုကိုလျှော့ချရုံသာမကအသုံးပြုသူအတွေ့အကြုံညံ့ဖျင်းခြင်းကိုလည်း ဦး တည်သွားနိုင်သည်။
PHP's Socket_set_set_Timeout () function ကကျွန်တော်တို့ကို socket အတွက်အချိန်ကုန်သတ်မှတ်ထားတယ်။ သတ်မှတ်ထားသောအချိန်အတွင်း Socket သည်သတ်မှတ်ထားသောအချိန်အတွင်းတုန့်ပြန်မှုမရရှိပါက socket_set_simeout () သည် စစ်ဆင်ရေးကိုအဆုံးသတ်ပြီးအမှားတစ်ခုပြန်ပို့သည်။ အချိန်ကြာမြင့်စွာပိတ်ဆို့ခြင်းအတွက်အချိန်ကြာမြင့်စွာပိတ်ဆို့ခြင်းအားဖြင့် socket operations များကိုအချိန်ကြာမြင့်စွာပိတ်ဆို့ခြင်းဖြင့်ရှောင်ရှားနိုင်သည်။
bool socket_set_timeout(resource $socket, int $seconds, int $microseconds = 0);
$ socket : အချိန်ကုန်ကိုသတ်မှတ်ရန် socket အရင်းအမြစ်။
$ စက္ကန့် - အချိန်ကုန်လွန်သောစက္ကန့်အရေအတွက်။
$ microseconds : microseconds အချိန်ကုန်နံပါတ်, ပုံမှန်ဖြစ်ပါတယ်။
ဤလုပ်ဆောင်မှုသည်အောင်မြင်မှုအပေါ် မှန်ကန်မှု နှင့်ပျက်ကွက်မှုအပေါ်မှားယွင်းစွာ မှားယွင်းစွာမှားယွင်းစွာ ယူမှတ်သည်။
ကျွန်ုပ်တို့တွင် TCP client တစ်ခုရှိပြီးဝေးလံခေါင်ဖျားသောဆာဗာတစ်ခုနှင့်ချိတ်ဆက်ရန်နှင့်တောင်းဆိုမှုကိုပေးပို့ရန်လိုအပ်သည့်ဆိုပါစို့။ အကယ်. ဆာဗာသည်တုန့်ပြန်ရန်နှေးကွေးလျှင်သို့မဟုတ်ကွန်ယက်ပြ problem နာတစ်ခုရှိလျှင်, အစီအစဉ်ကိုဆက်သွယ်မှုကာလအတွင်းအကန့်အသတ်မရှိစောင့်ဆိုင်းရန်အစီအစဉ်ကိုမလိုချင်ပါ။ Socket_set_Teimeout () ကို အသုံးပြု. အချိန်ကုန်ကိုမည်သို့သတ်မှတ်ရမည်အတွက်နမူနာကုဒ်ဖြစ်သည်။
<?php
// ဖန်တီးsocket
$host = 'www.example.com';
$port = 80;
$socket = fsockopen($host, $port, $errno, $errstr, 10); // ချိတ်ဆက်ရန်ကြိုးစားပါ10စက်ဏန့်
if (!$socket) {
echo "ချိတ်ဆက်. မရပါ:$errstr ($errno)\n";
exit;
}
// အချိန်ကိုသတ်မှတ်ပါ5စက်ဏန့်
socket_set_timeout($socket, 5);
// တောင်းဆိုမှုကိုပို့ပါ
fwrite($socket, "GET / HTTP/1.1\r\nHost: $host\r\nConnection: Close\r\n\r\n");
// တုံ့ပြန်မှုကိုဖတ်ပါ
$response = '';
while (!feof($socket)) {
$response .= fgets($socket, 128);
}
// output တုံ့ပြန်မှုအကြောင်းအရာ
echo $response;
// ရုပ်သိမ်းခြင်းsocket
fclose($socket);
?>
Socket Connection ကိုဖန်တီးပါ ။ FSOCCKOPEN () function ကိုသုံးပါ။
Socket Timeout : Socket_set_seTimeout () function ကိုမှတစ်ဆင့်အချက်အလက်များကို 5 စက္ကန့်ဖတ်ရန်အချိန်ကိုသတ်မှတ်ထားသည်။ ဤနည်းအားဖြင့်ဆာဗာတုန့်ပြန်မှုအချိန်သည် 5 စက္ကန့်ကျော်ပြီးသည်နှင့်အစီအစဉ်သည်စောင့်ဆိုင်းခြင်းနှင့်အမှားတစ်ခုပြန်ပို့လိမ့်မည်။
တောင်းဆိုမှုကိုပေးပို့ပါ။ တုံ့ပြန်မှုကိုဖတ်ပါ ။ အကယ်. ဆက်သွယ်မှုအောင်မြင်ပြီးတုံ့ပြန်မှုသည်အချိန်ကုန်မနေပါကဆာဗာ၏တုန့်ပြန်မှုအချက်အလက်များကိုဖတ်ရှုပါလိမ့်မည်။
Close Socket : ခွဲစိတ်ကုသမှုပြီးဆုံးသွားပြီးနောက် socket connection ကိုပိတ်ဖို့ FCLOESE () ကိုသုံးတယ်။
ကြာမြင့်စွာပိတ်ဆို့ခြင်းကိုရှောင်ကြဉ်ပါ ။ အကယ်. ဆာဗာသည်မအောင်မြင်ပါကသို့မဟုတ်ကွန်ယက်သည်အခြေအနေမကောင်းပါကဤအစီအစဉ်သည်အချိန်ကြာမြင့်စွာပိတ်ဆို့နိုင်သည်။
စနစ်တုန့်ပြန်မှုများကိုတိုးတက်အောင်ပြုလုပ်ခြင်း - အကျိုးသင့်အကြောင်းသင့်ရှိသောအချိန်ကုန်ခြင်းအချိန်ကိုချိန်ညှိခြင်းအစီအစဉ်သည်မမှန်ကန်သောတောင်းဆိုမှုများကိုအချိန်မီရပ်တန့်စေပြီးစနစ်၏ချောမွေ့မှုကိုဆက်လက်ထိန်းသိမ်းရန်အခြားအလုပ်များကိုဆက်လက်လုပ်ဆောင်ရန်လိုအပ်သည်။
အသုံးပြုသူအတွေ့အကြုံကိုတိုးတက်စေခြင်း - 0 က်ဘ်အပလီကေးရှင်းများသို့မဟုတ် 0 န်ဆောင်မှုများတွင်တုံ့ပြန်မှုမြန်နှုန်းသည်အသုံးပြုသူအတွေ့အကြုံအတွက်အရေးကြီးသောအချက်တစ်ချက်ဖြစ်သည်။ Socket blockage ကိုရှောင်ရှားခြင်းအားဖြင့်အသုံးပြုသူများသည်လျင်မြန်စွာတုံ့ပြန်ချက်များကိုလျင်မြန်စွာရယူပြီး 0 န်ဆောင်မှုအရည်အသွေးကိုတိုးတက်စေနိုင်သည်။
အချိန်ကုန်ခံချိန်ညှိခြင်းသင့်လျော်မှု - အချိန်ကုန်အချိန် setting ကိုတိကျသောကွန်ယက်ပတ် 0 န်းကျင်နှင့်လိုအပ်ချက်များကို အခြေခံ. ဆုံးဖြတ်သင့်သည်။ တိုတောင်းလွန်းသော setting သည်မကြာခဏဆက်သွယ်မှုအချိန်ကုန်များကိုဖြစ်ပေါ်စေနိုင်ပြီးအချိန်မီပြ problems နာများကိုရှာဖွေတွေ့ရှိနိုင်မည်မဟုတ်ပါ။
ကွန်ယက်အတက်အကျကိုကိုင်တွယ်ခြင်း - အချို့သောကိစ္စရပ်များတွင်ကွန်ယက်အတက်အကျများကမကြာခဏအချိန်ယူရခြင်းနှင့်သင့်တော်သောပြန်လည်ထူထောင်ရေးယန္တရားကိုဒီဇိုင်းပြုလုပ်သင့်သည်။
ခြွင်းချက်ကိုင်တွယ်ခြင်းနှင့်ပေါင်းစပ်ခြင်း - အချိန်ကုန်အမှားများကို socket_get_status () ကိုရနိုင်သည်။
Socket_set_simeout () function ကိုအသုံးပြုခြင်းအားဖြင့် PHP တွင် Socket Blocking ကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ အချိန်ကာလကိုကျိုးကြောင်းဆီလျော်စွာသတ်မှတ်ခြင်းသည်ပရိုဂရမ်၏ထိရောက်မှုနှင့်တုန့်ပြန်မှုများကိုတိုးတက်စေရုံသာမက,