PHP Network Programming တွင် Socket_addrinfo_Connect ကိုအသုံးပြုခြင်းနှင့် fwe ဖြင့်ရေးသားခြင်းနှင့်အချက်အလက်များရေးသားခြင်းအတွက်အချက်အလက်များရေးသားခြင်းသည်ကွန်ယက်ဆက်သွယ်ရေးနည်းစနစ်များထဲမှတစ်ခုဖြစ်သည်။ ဒေတာထုတ်လွှင့်မှု၏စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အတွက်ကြားခံနည်းပညာကိုဆွေးနွေးရန်အထူးအရေးကြီးသည်။ ဤဆောင်းပါးသည် Socket_addrinfo_Connect တွင် Buffers ကို Fock မှမည်ကဲ့သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။
Socket_addrinfo_Connect သည်လိပ်စာအချက်အလက်များအပေါ် အခြေခံ. Socket Connection ကိုလုပ်ဆောင်ပြီး TCP ဆက်သွယ်မှုအတွက်အသုံးပြုသည်။ ဆက်သွယ်မှုအောင်မြင်ပြီးနောက်ကျွန်ုပ်တို့သည်အချက်အလက်များကို fwo မှတစ်ဆင့် Socket Stream သို့ကျွန်ုပ်တို့အများအားဖြင့်ရေးပါ။
FWRITH ကိုယ်တိုင်သည်ကြားခံယန္တရားရှိသည်။ စာရေးစဉ်က PHP output buffer သို့ပထမဆုံးအကြိမ်ရေးသားလိမ့်မည်။ အဆိုပါကြားခံအပြည့်သို့မဟုတ်လန်းဆန်းစေသည့်အခါသာဒေတာကိုအခြေခံ socket သို့ပေးပို့ပါလိမ့်မည်။
အချက်အလက်အနည်းငယ်ကိုရေးရန်အတွက်တိုက်ရိုက် ခေါ်ဆိုမှုကို တိုက်ရိုက်ခေါ်ဆိုခြင်းသည် packet တစ်ခုအမြောက်အများကိုထုတ်လုပ်နိုင်ပြီး transcy ်ဌာန်းခြင်းထိရောက်မှုကိုအကျိုးသက်ရောက်စေပြီး latency နှင့် cpu load တိုးမြှင့်ပေးမည့် "packet fradmentation" အမြောက်အများကိုဖြစ်ပေါ်စေလိမ့်မည်။
တစ် ဦး ကြားခံသုံးပြီး:
သင် ခေါ်ဆို သည့်အကြိမ်အရေအတွက်ကိုလျှော့ချပါ
အနိမ့် -rites ကိုတစ် ဦး onl-write တစ်ခုသို့ပေါင်းစည်းပါ
System Call overhead ကိုလျှော့ချပါ
TCP အသွားအလာအသုံးချမှုကိုတိုးတက်စေသည်
<?php
$addrinfo = socket_addrinfo_lookup('m66.net', '80', AF_UNSPEC, SOCK_STREAM);
$socket = socket_addrinfo_connect($addrinfo);
if ($socket === false) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ");
}
?>
ဒေတာအားလုံးကိုမှတ်ဉာဏ်ကြားခံ (string or acaction engine ဝါဒ) သို့ပထမဆုံးရေးရန်အကြံပြုသည်။ ထို့နောက်တစ်ကြိမ်တွင် fwe နှင့်ပို့ပါ။
<?php
$buffer = '';
// မျိုးစုံဒေတာချုပ်တုပ
$dataPieces = ['Hello, ', 'this is ', 'a buffered ', 'write example.'];
foreach ($dataPieces as $piece) {
$buffer .= $piece;
}
// တစ်ကြိမ်ရေးပါsocket
fwrite($socket, $buffer);
?>
အကယ်. ဒေတာသည်အလွန်ကြီးမားသော်လည်းမှတ်စုများအလွန်အကျွံသုံးစွဲမှုကိုတိုးမြှင့်ခြင်းမှကာကွယ်ရန်ရေးသားထားသောစာအရေးအသားကိုပိတ်ပင်ရန်သတ်မှတ်ထားသောကြားခံအရွယ်အစားကိုသတ်မှတ်ရန်အကြံပြုသည်။
<?php
$bufferSize = 8192; // 8KBကြားခံ
$offset = 0;
$length = strlen($buffer);
while ($offset < $length) {
$chunk = substr($buffer, $offset, $bufferSize);
$written = fwrite($socket, $chunk);
if ($written === false) {
die("ရေးပါ");
}
$offset += $written;
}
?>
Merge Data Myanmar : System ခေါ်ဆိုမှုများကိုလျှော့ချရန်အောက်ပိုင်းရေးထားသောရေးသားထားသောစာအရေးယူမှုပေါင်းစည်းရန်ကြိုးစားပါ။
သင့်လျော်သောကြားခံအရွယ်အစားကိုသုံးပါ - မှတ်ဥာဏ်ဖိအားကိုရှောင်ရှားရန်ကွန်ယက်ပတ် 0 န်းကျင်နှင့်ဆာဗာစွမ်းဆောင်ရည်အတိုင်း Buffer Size ကိုချိန်ညှိပါ။
အချိန်မီကြားခံကိုအချိန်မီဖြန့်ဝေပါ ။ စာအရေးအသားပြီးနောက်သင် FFLUSLL () ကိုအချိန်မီပေးပို့သောသေချာစေရန် FFLUSH () ကိုဖုန်းဆက်နိုင်သည်။
အမှားကိုင်တွယ်ခြင်း - စာရေးခြင်းပျက်ကွက်ခြင်းနှင့်တစ်စိတ်တစ်ပိုင်းရေးသားခြင်းကိုကိုင်တွယ်ရန် FWRITE ၏ပြန်လာတန်ဖိုးကိုစစ်ဆေးပါ။
ရွေးချယ်မှုမရေးပါ - စွမ်းဆောင်ရည်မြင့်မားသော 0 ယ်လိုသည့်အခြေအနေများတွင် - စွမ်းဆောင်ရည်မြင့်မားသော 0 ယ်လိုသည့်အခြေအနေများတွင်ထိရောက်စွာပိတ်ဆို့ခြင်းနှင့်ထိရောက်မှုကိုရှောင်ရှားရန်ပိတ်ဆို့ခြင်းမရှိသော socket နှင့် stream_select ကို သုံးပါ။
မြဲ connection များအသုံးပြုခြင်းကိုအသုံးပြုခြင်း - မကြာခဏဆက်သွယ်မှုပြတ်တောက်ခြင်းနှင့်ဆက်သွယ်မှုပြတ်တောက်မှု overhead ကိုလျှော့ချပါ။
Network layer Optimization - TCP_NODELAY ကိုဖွင့်ပါ။