PLP အမြင့်ဆုံးနှောင့်နှေးမှုထိန်းချုပ်မှုကိုကိုင်တွယ်ဖြေရှင်းသည့် PHP application များတွင် time_nanosleep () function ကိုမကြာခဏရေတိုတိကျသောအိပ်စက်ခြင်းကိုရရှိရန်အသုံးပြုသည်။ သို့သော်၎င်းသည်အထူးသဖြင့် latencentency-sensitive application များတွင် operating systems သို့မဟုတ် php ပတ် 0 န်းကျင်တွင်တည်ငြိမ်မှုမရှိပါ။ ထိုသို့သောလုပ်ဆောင်မှုများတွင်မသေချာမရေရာမှုများရှိနိုင်သည်။ စနစ်အချိန်ဇယားများကြောင့်သူတို့၏အမှန်တကယ်အိပ်စက်ခြင်းအချိန်သည်မျှော်လင့်ချက်များထက်ကျော်လွန်ပြီးတင်းကြပ်သောအချိန်ကိုက်ထိန်းချုပ်ရန်လိုအပ်ချက်ကိုမဖြည့်ဆည်းနိုင်ပါ။
ဒီတော့ application patrie တွေအတွက်အချိန်မှန်အချက်အလက်ပြုပြင်ခြင်း, ကြိမ်နှုန်း ဖြင့် ငွေပေးငွေယူခြင်းခြင်း simulation simulating,
Time_Nanosleep () nanosecond အိပ်စက်ခြင်းထိန်းချုပ်မှုကိုပေးသည်။ Linux Systems အများစုတွင် 1 မီလီဗစ် (0.NANOSEEP) ဟုခေါ်လျှင်ပင် Time_Nanosleep (0, 500000) ဟုခေါ်လျှင်ပင် operating system သည် 1 မီလီဗစ်သို့မဟုတ်ထိုထက်မကသောကြောင့်နှောင့်နှေးနိုင်သည်။
ထို့အပြင် Time_Nanosleep () PHP ဗားရှင်းအချို့တွင်တသမတ်တည်းမလုပ်ဆောင်နိုင်ပါ။ အချို့ပလက်ဖောင်းများသည်သတိပေးချက်များကိုပင်ပစ်ချနိုင်သည်သို့မဟုတ်တိကျမှန်ကန်မှုကိုလျှော့ချနိုင်သည်။
USELEEP ၏အနည်းဆုံးယူနစ်သည် (တစ်စက္ကန့်တစ်သန်း၏) သည် (စက္ကန့်တစ်သန်း၏တစ်သန်း) တွင် microleconds (တစ်စက္ကန့်တစ်သန်း) ဖြစ်သည်။ ဥပမာအားဖြင့်:
usleep(500); // နေှာင့်နေှး500microseconds,အခုချက်ချင်း0.5မီလီစက္ကန့်
1 မီလီဗစ် (1) မီလီဗစ် (1) မီလီဗစ် (1) ထက်ပိုသော USLEEP () သည်ပိုမိုကျယ်ပြန့်စွာပံ့ပိုးပေးနိုင်ရန်နှင့် time_nanosleep ကဲ့သို့သောသဘာဝပတ်ဝန်းကျင်ကွဲပြားခြားနားမှုများကြောင့်မကိုက်ညီသောအပြုအမူများမရှိသေးသောကြောင့်၎င်းသည်ပိုမိုထောက်ခံသည်။
အကယ်. application သည်အလွန်အမင်းတိကျမှုလိုအပ်သည်ဆိုပါက "အလုပ်များသော" နည်းလမ်းကိုလက်ရှိအချိန်တွင်လက်ရှိအချိန်တွင်တက်ကြွစွာမဲရုံဖွင့်ရန်တက်ကြွစွာမဲပေးရန်အသုံးပြုနိုင်သည်။ ဤချဉ်းကပ်မှုသည်များသောအားဖြင့် CPU ကိုအချိန်တိကျမှုအတွက်ပူဇော်တတ်၏။
function busyWait(int $nanoseconds)
{
$start = hrtime(true); // လက်ရှိ timestamp ရယူပါ(nanoseconds တွင်)
while ((hrtime(true) - $start) < $nanoseconds) {
// အလုပ်များခြင်းနှင့်စောင့်ဆိုင်း,ဒီကာလအတွင်းခွဲစိတ်မှုမရှိဘူး
}
}
// အသုံးပြုမှုဥပမာ:စောင့်0.5မီလီစက္ကန့်(500,000nonoseconds)
busyWait(500000);
HRT အချိန် (စစ်မှန်တဲ့) သည် လက်ရှိ timestamp ကို nanoseconds တွင်ပြန်လည်ရောက်ရှိစေသည်။ ဤနည်းလမ်းသည်အလွန်အမင်းကိတ်နေသည့်အခြေအနေများတွင်အလွန်တိကျပြီးအလွန်မြင့်မားသောစွမ်းဆောင်ရည်လိုအပ်သည့် application scarios အတွက်သင့်တော်သော်လည်း CPU အသုံးပြုမှုအချို့ကိုလက်ခံနိုင်သည်။
အကြီးစားမြင့်မားသောတစ်ပြိုင်နက်တည်း + High-Platenicen Latency Control လိုအပ်သည့်စီမံကိန်းများအတွက် SWOOLE extension ကိုမိတ်ဆက်ခြင်းသည်ပိုမိုခေတ်မီပြီးလက်တွေ့ကျသောရွေးချယ်စရာဖြစ်သည်။ SWOPE သည် Coroutines, Asynchronous I / O နှင့်အခြားစွမ်းရည်များကို PHP သို့ယူဆောင်လာပြီး nanosecond-level co :: အိပ်စက်ခြင်းကို ပေးသည်။
Swoole\Coroutine::sleep(0.0005); // အိပ်နေခြင်း0.5မီလီစက္ကန့်
SWOOLE သည် Coroutine စီစဉ်ခြင်းစနစ်တွင်အလုပ်လုပ်ပြီးပိုမိုတည်ငြိမ်သောတိကျမှုထိန်းချုပ်မှုကိုပြုလုပ်ပြီးကွန်ယက် 0 န်ဆောင်မှုများနှင့်ပြတ်တောင်းဆဲလုပ်ငန်းအစီအစဉ်များကဲ့သို့သောအခြေအနေများအတွက်သင့်တော်သည်။ Gitbox.net တွင်တပ်ဖြန့်ထားသည့် SWOPE.NET တွင်တပ်ဆင်ထားသော SWOOLE 0 န်ဆောင်မှုများသည်စွမ်းဆောင်ရည်ကိုစွန့်လွှတ်ခြင်းမရှိဘဲပိုမိုကောင်းမွန်သောထိန်းချုပ်မှုကိုရနိုင်သည်။
နှောင့်နှေးနေသည့်အပလီကေးရှင်းများတွင် time_nanosleep () သည် အပေါ်ယံ nanosecond ထိန်းချုပ်မှုစွမ်းရည်ကိုပေးသည်။ သို့သော်ယုံကြည်စိတ်ချရသောမဟုတ်ပါ။ သတ်သတ်မှတ်မှတ်ဇာတ်လမ်းအရသိရသည်
1 မီလီစက္ကန့ ် ထက်များစွာ။
နှောင့်နှေးမှုသည် 1 မီလီစက္ကန်ထက်နည်းသော်လည်းတိကျမှန်ကန်မှုလိုအပ်ချက်များမှာမြင့်မားသည် ။
ခေတ်မီပြတ်တောင်းပြတ်တောင်း / coroutine စွမ်းရည်များ - SWOOLE extensions များကိုအသုံးပြုပြီး Coroutine / Coroutine Coroutine Cordability: CO :: အိပ်စက်ခြင်း () ကိုအကောင်အထည်ဖော်ရန်။
မှန်ကန်သောအခြားရွေးချယ်စရာရွေးချယ်ခြင်းဖြင့်သာ PHP တွင်တည်ငြိမ်သောနှင့်တိကျသော latency ထိန်းချုပ်မှုကိုအမှန်တကယ်ရရှိနိုင်ပါသည်။ စွမ်းဆောင်ရည်မြင့်မားသော application များအတွက်အချိန်နှင့်တပြေးညီအာမခံချက်များအတွက်ဤအချက်သည်အလွန်အရေးကြီးသည်။