မြင့်မားသောတိကျသောအချိန်ထိန်းချုပ်ထားသော PHP applications များတွင် Time_Nanosleep () သည် developer များကိုစက္ကန့်ပိုင်းနှင့် nanoseconds အတွက်ကာလအဘို့အစီအစဉ်ကို "အိပ်ပျော်" ခွင့်ပြုသည့်ဘုံ function တစ်ခုဖြစ်ပါတယ်။ သို့သော်၎င်းသည် nanosecond နှောင့်နှေးမှုနှောင့်နှေးမှုများကိုသီအိုရီအရသိရှိထားသော်လည်း, ဆိုလိုသည်မှာသင်သည် microsecond နှောင့်နှေးမှု 100 ကိုသတ်မှတ်ထားလျှင်ပင်စနစ်သည်မီလီစက္ကန်အတွင်း၌ပင် ပို. နှောင့်နှေးနိုင်သည်။
အကယ်. သင်သည်ကြိမ်နှုန်းမြင့်မားသောကုန်သွယ်ရေး Simulator ယန္တရားသို့မဟုတ် Real-time controvection ယန္တရားသို့မဟုတ်အချိန်နှင့်တပြေးညီထိန်းချုပ်မှုဆိုင်ရာယန္တရားကဲ့သို့သောအချိန် - အထိခိုက်မခံသော application တစ်ခုတည်ဆောက်နေပါကအချိန်နှင့်တပြေးညီ ထိန်းချုပ်မှု ဆိုင်ရာယုတ္တိဗေဒသည်အထူးသဖြင့်သေစေနိုင်သည်။ ဒီတော့ time_nanosleep () မလုံလောက်တဲ့အခါဘာတွေလုပ်သင့်သလဲ။ ဤဆောင်းပါးသည် ပို. ယုံကြည်စိတ်ချရသောအခြားနည်းလမ်းများစွာကိုမိတ်ဆက်ပေးလိမ့်မည်။
USELEEP () သည် အကြွင်းမဲ့တိကျမှန်ကန်မှုကိုအာမခံနိုင်သော်လည်းအချို့သောစနစ်များတွင်၎င်း၏တည်ငြိမ်မှုသည် Time_Nanosleep ထက် ပို. ကောင်းသည်။
usleep(100); // နေှာင့်နေှး100microseconds
မှတ်ချက် - USELEEP () သည် nanoseconds (1 စက္ကန့် = 1000000 microSeconds) အစား microseconds ကိုလက်ခံသည်။ ထို့ကြောင့်၎င်းသည် Nanosecond နှောင့်နှေးမှုကိုတိုက်ရိုက်အကောင်အထည်မဖော်နိုင်ပါ။ သို့သော်စီးပွားရေးလုပ်ငန်းအများစုတွင် microseconds သည်လုံလောက်သည်။
အကယ်. သင်သည် nanosecond level control လိုအပ်ပါက CPU မှအလုပ်များနေရန်အလုပ်များနေနိုင်သည်။ ဤနည်းလမ်းသည်ကြိုတင်သတ်မှတ်ထားသောကြားကာလရောက်ရှိသည်အထိမြင့်မားသောတိကျစွာအချိန်ကိုစဉ်ဆက်မပြတ်ဖတ်ရှုရန်ဖြစ်သည်။
function nano_sleep_busy($nanoseconds) {
$start = hrtime(true);
$end = $start + $nanoseconds;
while (hrtime(true) < $end);
}
nano_sleep_busy(50000); // နေှာင့်နေှး50microseconds
HRTItime (Trust) သည်လက်ရှိ nanosecond timestamp ကိုပြန်လည်ရောက်ရှိစေပြီးအချိန်ကြားကာလ၏တိကျသောထိန်းချုပ်မှုအတွက်သင့်လျော်သည်။
အလွန်အမင်းလိုအပ်ချက်များရှိသောစနစ်များအတွက် PHP ၏ကိုယ်ပိုင်စွမ်းဆောင်ရည်များသည်မလုံလောက်နိုင်ပါ။ ယခုအချိန်တွင်သင်သည် cli tools များသို့မဟုတ် system-+ ++ တွင်ရေးသားထားသော chec-c ++ တွင်ရေးသားထားသော CHOTORTS + ++ တွင်ရေးသားထားနိုင်သည်။
ဥပမာအားဖြင့်, compiled executable program ကိုခေါ်ပါ (သင့်တွင် အိပ်ပျော် နေပြီဆိုပါစို့။
exec('/usr/local/bin/sleep_ns 50000'); // နေှာင့်နေှး50microseconds
ဤကိရိယာကိုသင်ထိန်းချုပ်သောဆာဗာတစ်ခုတွင်လည်းသင်ထိန်းချုပ်နိုင်သည်။
file_get_contents("https://gitbox.net/tools/sleep_ns?duration=50000");
ဤနည်းအားဖြင့်ထိန်းချုပ်မှုယုတ္တိဗေဒကိုပိုမိုသင့်လျော်သောဘာသာစကားသို့ကူးပြောင်းနိုင်သည်။
အကယ်. သင်၏ PHP ပတ်ဝန်းကျင်သည် SWPE ကို SWOOLE ကို အသုံးပြုသည် (သို့) Refinphp / Event loop ယန္တရားကိုအသုံးပြုပါက,
Swoole\Timer::after(0.05, function () {
echo "50microseconds后执行\n";
});
အခြေခံအလွှာသည် System Timers များအပေါ်မှီခိုနေသော်လည်း SWOOLE ကို C တွင်ရေးသားပြီး PHP ၏ Execution Engine ကိုကျော်လွှားနိုင်သည့်အတွက် PHP ၏ Execution Engine ကိုကျော်လွှားနိုင်သည့်အတွက်တိကျစွာနှင့်စွမ်းဆောင်ရည်နှစ်ခုလုံးသည်ဇာတိလုပ်ဆောင်ချက်များထက်ပိုမိုကောင်းမွန်သည်။
နည်းလမ်း | အနည်းဆုံးနှောင့်နှေး granularity | ဟုတ်မှန်ရေး | ကပိတ်ဆို့ရှိမရှိ | အသုံးပြုရန်အကြံပြုသည် |
---|---|---|---|---|
TIME_NANOSESEEPE | nonoseconds | နိမ့်သော | ဟုတ်ကဲ့ | ပုံမှန်နှောင့်နှေးမြင်ကွင်း |
USlek | microseconds | အလယ်အလတ်ဖြစ်သော | ဟုတ်ကဲ့ | <1 စက္ကန့်နှောင့်နှေး |
အလုပ်များ + Hrt အချိန် | nonoseconds | မြင့်သော | ဟုတ်ကဲ့ (မြင့်မားသော CPU) | အလွန်တိကျမှန်ကန်မှုလိုအပ်ချက်များ |
ပြင်ပကိရိယာများ | အကောင်အထည်ဖော်မှုအပေါ်မူတည်သည် | မြင့်သော | ထိန်းချုပ်နိုင်သော | စနစ်နှင့်ပေါင်းစည်း |
Swoole / Refillphp | microseconds | မြင့်သော | မဟုတ် | မြင့်မားသောတစ်ပြိုင်နက်တည်း / Coroutine Pararios |
အခြေအနေအများစုတွင်သင်သည်သောင်းနှင့်ချီသော microseconds မှရာနှင့်ချီသော microseconds မှရာနှင့်ချီသော microseconds များနှောင့်နှေးမှုကိုတိကျစွာထိန်းချုပ်လိုပါက USLEEP () နှင့် HRItime ပေါင်းစပ်ခြင်းတို့သည်အလွန်လက်တွေ့ကျသည်။ အကယ်. သင်သည်စွမ်းဆောင်ရည်မြင့်မားသော application တစ်ခုတည်ဆောက်နေပါကအလွန် latencentency-sensitive ဖြစ်စေသော asynchronous framework (SWOOLE ကဲ့သို့) သို့မဟုတ်လုပ်ဆောင်ချက်အချို့ကိုအကောင်အထည်ဖော်ရန်ပိုမိုသင့်တော်သောအခြေခံကျသောဘာသာစကားသို့ပြောင်းရန်အကြံပြုသည်။
သတိရပါ - PHP သည်အချိန်နှင့်တပြေးညီထိန်းချုပ်ထားသောဘာသာစကားမဟုတ်ပါ။ နည်းပညာဆိုင်ရာနယ်နိမိတ်များကိုရွေးချယ်ခြင်းအားဖြင့်သာယုံကြည်စိတ်ချရသောနှင့်ထိရောက်သောအစီအစဉ်ကိုသင်ရေးနိုင်ပါသည်။