လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> တိကျသောနှောင့်နှေးထိန်းချုပ်မှုကိုအောင်မြင်ရန် Microtime နှင့်အတူ time_nanosleep နှင့်အတူ

တိကျသောနှောင့်နှေးထိန်းချုပ်မှုကိုအောင်မြင်ရန် Microtime နှင့်အတူ time_nanosleep နှင့်အတူ

gitbox 2025-05-20

မြင့်မားသောတိကျမှုလုပ်ငန်းများသို့မဟုတ်အချိန် - အထိခိုက်မခံသော PHP applications များတွင်သာမန် အိပ်စက်ခြင်း () သို့မဟုတ် USEEP () သည် nanosecond နှောင့်နှေးသည့်ထိန်းချုပ်မှုလိုအပ်ချက်များကိုဖြည့်ဆည်းရန်ပျက်ကွက်လေ့ရှိသည်။ အိပ်စက်ခြင်း () သည် စက္ကန့်အနည်းငယ်မျှသာရှိနိုင်သည်။ Usleep () PHP ၏ကိုယ်ပိုင်စီစဉ်ခြင်းယန္တရားနှင့်စနစ်တိကျမှန်ကန်မှုကန့်သတ်ချက်များကြောင့်တည်ငြိမ်သောအဆင့်မြင့်ထိန်းချုပ်မှုကိုရရှိရန်မဖြစ်နိုင်ပါ။

ဤပြ problem နာကိုဖြေရှင်းရန် The Time_Nanosleep () လုပ်ဆောင်ချက်သည်ပိုမိုကောင်းမွန်သောနှောင့်နှေးမှုကိုထိန်းချုပ်ထားသောနည်းလမ်းဖြစ်သည်။ ဤဆောင်းပါးသည်တိကျသောနှောင့်နှေးမှုကိုထိန်းချုပ်ရန် Microtime ( Time_Nanosleep) ကိုမည်သို့ပေါင်းစပ်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

Time_NANOSESEEP ဘာကြောင့်လဲ။

time_nanosleep () PHP မှ PHP မှ PHP မှပေးသော function တစ်ခုဖြစ်ပြီး nanosecond-level နှောင့်နှေးမှုအတွက်ဖြစ်သည်။ ၎င်း၏ function ရှေ့ပြေးပုံစံအောက်ပါအတိုင်းဖြစ်သည် -

 bool time_nanosleep(int $seconds, int $nanoseconds)

scription ကိုခေတ္တရပ်တန့်ရန် "စက္ကန့်" နှင့် "nanoseconds" ပေါင်းစပ်မှုကိုပေါင်းစပ်ရန်ခွင့်ပြုသည်။ ဥပမာအားဖြင့်, အကယ်. သင်သည် 1.5 မီလီစက္ကန့်များကိုနှောင့်နှေးလိုပါက (i.E. 1500000 nanoseconds) ကိုသင် အသုံးပြု. အောက်ပါနည်းလမ်းကိုသုံးနိုင်သည်။

 time_nanosleep(0, 1500000);

မှတ်ချက် - Time_Nanosleep ၏အပြုအမူသည်စနစ်နာရီတိကျမှန်ကန်မှုနှင့် PHP အကောင်အထည်ဖော်မှုကြောင့်ထိခိုက်နေဆဲဖြစ်ပြီး, သို့သော် application အများစုတွင်၎င်းသည် USEEEP () ထက် ပို. တည်ငြိမ်သည်။

microtime နှင့်အတူနှောင့်နှေးအချိန်တိကျသောထိန်းချုပ်မှုနှင့်အတူ

တခါတရံကျွန်ုပ်တို့သည်သတ်မှတ်ထားသောအချိန်ကိုနှောင့်နှေးရန်သာမကကုဒ်ကိုအချိန်အတန်ကြာကာလအတွင်းအဆုံးအထိအချိန်အတန်ကြာထိန်းချုပ်ရန်သေချာစေလိုသည်။ ယခုအချိန်တွင် Microtime (True) သည်အလွန်အသုံးဝင်သည်, ၎င်းသည်ပိုမိုမြင့်မားသောတိကျမှန်ကန်မှုနှင့်အတူ UNIX EPOCH မှကတည်းက microsecond timestamp ကိုပြန်လည်ရရှိခဲ့သည်။

အောက်ပါတို့သည်အချိန်ကုန်လွန်မှု၏ဥပမာအားဖြင့် Time_Nanosleep () နှင့် Microtime (Trust) ပေါင်းစပ် အသုံးပြု. အကောင်အထည်ဖော်ခြင်း၏ဥပမာတစ်ခုဖြစ်သည်။

 <?php

// ပစ်မှတ်နှောင့်နှေးအချိန်(စက္ကန့်ပိုင်းအတွင်း)
$targetDelay = 0.005; // 5 မီလီစက္ကန့်

$start = microtime(true);

// အချို့သောစစ်ဆင်ရေးဖျော်ဖြေ
for ($i = 0; $i < 1000; $i++) {
    // ဒီသံသရာအချိန်အတန်ကြာစားသုံးကြောင်းယူဆ
}

// စားသုံးအချိန်တွက်ချက်
$elapsed = microtime(true) - $start;

// အပိုဆောင်းနှောင့်နှေးဘို့လိုအပ်သောအချိန်
$remainingDelay = $targetDelay - $elapsed;

if ($remainingDelay > 0) {
    // ကျန်ရှိသောအချိန်ကိုစက္ကန့်ပိုင်းနှင့် nanoseconds သို့ခွဲထွက်
    $seconds = (int)$remainingDelay;
    $nanoseconds = (int)(($remainingDelay - $seconds) * 1e9);

    // တိကျသောနှောင့်နှေး
    time_nanosleep($seconds, $nanoseconds);
}

// စုစုပေါင်းအချိန်စားသုံးစစ်ဆေးမှုစစ်ဆေးမှုများ
$totalTime = microtime(true) - $start;
echo "စုစုပေါင်းအချိန်စားသုံးမှု: " . round($totalTime * 1000, 3) . " မီလီစက္ကန့်\n";

ပုံမှန် application အခြေအနေများ

  • Real-time ရယူထားသောစနစ်တွင်နမူနာကြားကာလများကိုထိန်းချုပ်ခြင်း

  • အမြန်နှုန်းကိုကန့်သတ်ထားသည်။

  • အချို့သော interface ကိုတုန့်ပြန်မှုအပြုအမူကိုစမ်းသပ်သည့်အခါကွန်ယက်နှောင့်နှေးမှုများအားတုပပါ

ဥပမာမြန်နှုန်းကန့်သတ်ချက် API တောင်းခံသူကိုအကောင်အထည်ဖော်သောအခါ

 <?php

$urls = [
    "https://gitbox.net/api/data/1",
    "https://gitbox.net/api/data/2",
    "https://gitbox.net/api/data/3"
];

$interval = 0.2; // တိုင်း 200 မီလီစက္ကန့်请求一次

foreach ($urls as $url) {
    $start = microtime(true);

    // Simulation တောင်းဆိုမှု
    file_get_contents($url);

    $elapsed = microtime(true) - $start;
    $remaining = $interval - $elapsed;

    if ($remaining > 0) {
        time_nanosleep(0, (int)($remaining * 1e9));
    }
}

ဤနည်းအားဖြင့်တောင်းဆိုမှုတစ်ခုစီအကြားကြားကာလကိုပိုမိုတိကျစွာထိန်းချုပ်နိုင်သည်, ပစ်မှတ်ဆာဗာပေါ်တွင်ဖိအားကိုဖိအားမပေးပါနှင့်။

မှတ်သားရန်အရာ

  • Time_Nanosleep () သည်အချိန်နှင့်တပြေးညီလည်ပတ်မှုစနစ်များတွင် "ခက်ခဲသောအချိန်" မဟုတ်ဘဲ 100% တိကျမှန်ကန်မှုကိုမအာမခံနိုင်သော်လည်းအရေးမပါသည့်အခါသမယများတွင်အသုံးပြုရန်လုံလောက်သည်။

  • အချို့သောပလက်ဖောင်းများ (သို့) PHP သည် time_nanosleep () ကို အထောက်အကူပြုမည်မဟုတ်ပါ။ အသုံးမပြုမီလုပ်ဆောင်မှုကိုရရှိခြင်းရှိမရှိအတည်ပြုရန်အကြံပြုသည်။

  • ပိုမိုတည်ငြိမ်သောအချိန်ဇယားတိကျမှုလိုအပ်ပါကအခြားဘာသာစကားများ (ဥပမာ C) သို့မဟုတ် system-level support ကိုထည့်သွင်းစဉ်းစားရန်လိုအပ်နိုင်သည်။

အကျဉ်းချုပ်

Time_Nanosleep (Trust) ဖြင့် Microtime (Trust) ဖြင့် PHP တွင်ပိုမိုတိကျသောနှောင့်နှေးမှုထိန်းချုပ်မှုကိုပိုမိုတိကျသောထိန်းချုပ်မှုကိုပိုမိုတိကျသောထိန်းချုပ်မှုကိုရရှိနိုင်ပါသည်။ ၎င်းသည် Systems စီစဉ်ခြင်းနှင့် PHP အကောင်အထည်ဖော်မှုအသေးစိတ်အချက်အလက်များအရအကန့်အသတ်ရှိသော်လည်းအပလီကေးရှင်းအများစုတွင်လုံလောက်သောတိကျသောနှင့်ပြောင်းလွယ်ပြင်လွယ်မှုများကိုထောက်ပံ့ပေးပြီးသန့်စင်ထားသော latency control အတွက်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။