PHP တွင်တိကျသောအချိန်ထိန်းချုပ်မှုမြင့်မားသောအချိန်နှင့်တိကျသောမဲရုံများ, စွမ်းဆောင်ရည်စစ်ဆေးခြင်းသို့မဟုတ်တိကျသောလုပ်ငန်းခွင်အချိန်ဇယားကဲ့သို့တင်းကျပ်သောအချိန်ကြားကာလများအတွက်အလွန်အရေးကြီးသည်။ PHP's Time_Nanosleep function သည်သတ်မှတ်ထားသောစက္ကန့်အနည်းငယ်နှင့် nanoseconds များကိုခေတ္တရပ်တန့်စေပြီးအစဉ်အ လာအိပ်စက်ခြင်း နှင့် USEEP လုပ်ငန်းများအတွက်အချိန်တိကျမှန်ကန်မှုကိုပြုလုပ်နိုင်သည်။ သို့သော် Time_nanosleep ကိုအသုံးပြုခြင်းသည်အလွန်တိကျစွာအချိန်ထိန်းချုပ်မှုလိုအပ်ချက်အားလုံးကိုဖြည့်ဆည်းရန်မလုံလောက်ပါ။ မြင့်မားသောတိကျစွာ Timekeeping Tools များနှင့်ပေါင်းစပ်ပြီးထိန်းချုပ်မှု၏တိကျမှန်ကန်မှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
ဤဆောင်းပါးသည်ပိုမိုတိကျသောအချိန်ထိန်းချုပ်မှုရရှိရန်အချိန်မြင့်မားသောအချိန်ကိုက်ရန် အချိန်ကောင်း အချိန်နှင့်ပေါင်းစပ်အသုံးပြုရမည်ကိုဤဆောင်းပါးကမိတ်ဆက်ပေးလိမ့်မည်။
Time_Nanosleep function ကပရိုဂရမ်ကိုသတ်မှတ်ထားသောစက္ကန့်ပိုင်းနှင့် nanoseconds များပေါ်တွင်အိပ်စက်ခြင်းကိုခွင့်ပြုသည်။ ၎င်း၏ function ကိုလက်မှတ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool time_nanosleep(int $seconds, int $nanoseconds)
$ စက္ကန့် - Integer စက္ကန့်
$ nanoseconds : nanoseconds (အကွာအဝေး 0-9999999999999)
ဥပမာအသုံးပြုမှု:
time_nanosleep(0, 500000000); // ခေတ္တရပ်ဆိုင်းခြင်း0.5စက်ဏန့်
အိပ်စက်ခြင်း နှင့် USLEEP နှင့်နှိုင်းယှဉ်လျှင် Time_Nanosleep သည် nanosecond ထိန်းချုပ်မှုကိုပေးသည်။
Microtime (Trust) ကဲ့သို့သော PHPTMENTIME (TRUS) ကဲ့သို့သော PHP ဇာတိအချိန်ဇယားများသည်လက်ရှိအချိန်တွင် microsecond point နံပါတ်များကိုပြန်ပို့နိုင်သော်လည်းကန့်သတ်ချက်များရှိနေသေးသည်။ ပိုမိုတိကျသောအချိန်ထိန်းချုပ်မှုရရှိရန်ကျွန်ုပ်တို့သည်လုပ်နိုင်သည် -
HRTITION (PHP 7.3+) ကိုအသုံးပြုခြင်း (PHP 7.3+) ကိုအသုံးပြုခြင်းသည် timestamp ကို nanosecond တိကျမှုနှင့်အတူ timestamp ကိုပြန်လည်ရရှိခဲ့သည်။
Time_nanosleep နှင့်ပေါင်းစပ်ပြီး Pater Time ကိုတိကျစွာထိန်းချုပ်ပါ။
စစ်ဆေးမှုကိုစစ်ဆေးခြင်းအားဖြင့်အိပ်စက်ခြင်းအချိန်သည်အမှားအယွင်းများအတွက်လျော်ကြေးပေးရန်အိပ်စက်ခြင်းအချိန်သည် dynamically ကိုချိန်ညှိနိုင်သည်။
အောက်ပါဥပမာသည် Time_Nanosleep ကို အသုံးပြုနည်းကို Execute Upplets သည်ပိုမိုတိကျသောတိကျမှုရှိစေရန်သတ်မှတ်ထားသောအချိန်ကြားကာလတွင်ပြုလုပ်ရန် HRT အချိန် နှင့်ပေါင်းစပ်ခြင်းနှင့်ပေါင်းစပ်ခြင်းများကိုဖော်ပြသည်။
<?php
// ပစ်မှတ်ကြားကာလ:50毫စက်ဏန့်
$interval_ns = 50 * 1000 * 1000; // 50,000,000 纳စက်ဏန့်
// စတင်ချိန်ကိုရယူပါ
$start_time = hrtime(true);
while (true) {
// တာဝန်များကိုလုပ်ဆောင်
echo "Task Execution Time:" . (hrtime(true) - $start_time) / 1e9 . " စက်ဏန့်\n";
// လာမည့်ကွပ်မျက်များအတွက်ပစ်မှတ်အချိန်တွက်ချက်
$start_time += $interval_ns;
// လက်ရှိအချိန်နှင့်ပစ်မှတ်အချိန်အကြားခြားနားချက်ကိုတွက်ချက်ပါ
$now = hrtime(true);
$diff = $start_time - $now;
if ($diff > 0) {
// 拆分为စက်ဏန့်和纳စက်ဏန့်
$sleep_sec = intdiv($diff, 1_000_000_000);
$sleep_nsec = $diff % 1_000_000_000;
// 精确ခေတ္တရပ်ဆိုင်းခြင်း
time_nanosleep($sleep_sec, $sleep_nsec);
} else {
// ထွက်အချိန်ကုန်,အိပ်ပါ,ယခုလာမယ့်ပတ်ပတ်လည် execute
continue;
}
}
ဤကွင်းဆက်သည်လုပ်ငန်းတာဝန်တစ်ခုစီအကြားရှိကြားကာလသည် 50 မီလီစက္ကန် 50 နီးပါးရှိသည်။ အမှန်တကယ်လည်ပတ်ချိန်နှင့်ကြိုတင်သတ်မှတ်ထားသောအချိန်အကြားကွာဟချက် ကို တွက်ချက်ခြင်းအားဖြင့်,
အဆင့်မြင့်အချက်အလက်ရယူခြင်း - အာရုံခံကိရိယာအချက်အလက်များကိုသတ်မှတ်ထားသောအချိန်ကြားကာလတွင်ကောက်ယူသည်။
တိကျသောလုပ်ငန်းတာဝန်များ : အချိန် - အထိခိုက်မခံ asynchronous task execution ။
စွမ်းဆောင်ရည်စစ်ဆေးမှု - တိကျသောတောင်းဆိုမှုကြားကာလကိုတုပပါ။
time_nanosleep သည် nanosecond တိကျမှန်ကန်မှုကိုပေးနိုင်သော်လည်း operating system ကိုစီစဉ်ခြင်းနှင့် PHP operating enviration envirations ား uncontrolating envirations ား uncontrolt နှောင့်နှေးမှုများဖြစ်ပေါ်စေလိမ့်မည်။ Ultra-High Precision လိုအပ်ချက်များအတွက် C-Extension သို့မဟုတ်အထူးအချိန်ကာလကို hardware များကိုပေါင်းစပ်ရန်လိုအပ်သည်။
ကွန်ယက်တောင်းဆိုမှုများတွင်ပြင်ပ API ကိုခေါ်ရန်လိုအပ်ပါက GitBox.net ဖြင့် domain name ကိုအစားထိုးနိုင်သည်။ ဥပမာအားဖြင့်:
$url = "https://api.gitbox.net/v1/data";
$response = file_get_contents($url);
PHP ၏ Time_Nanosleep နှင့် High-Precision Timing Function ကိုပေါင်းစပ်ခြင်းအားဖြင့် Hrtilty Hrtily ကိုပိုမိုတိကျမှန်ကန်သောအချိန်ထိန်းချုပ်မှုကိုရရှိနိုင်ပါသည်။ ဤနည်းလမ်းကိုအသုံးပြုခြင်းအားဖြင့်အချိန်အမှားများစုဆောင်းခြင်းကိုထိရောက်စွာလျှော့ချနိုင်ပြီးအစီအစဉ်၏တည်ငြိမ်မှုနှင့်တိကျမှန်ကန်မှုကိုတိုးတက်ကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။