မြင့်မားသောတိကျမှုလုပ်ငန်းများသို့မဟုတ်အချိန် - အထိခိုက်မခံသော PHP applications များတွင်သာမန် အိပ်စက်ခြင်း () သို့မဟုတ် USEEP () သည် nanosecond နှောင့်နှေးသည့်ထိန်းချုပ်မှုလိုအပ်ချက်များကိုဖြည့်ဆည်းရန်ပျက်ကွက်လေ့ရှိသည်။ အိပ်စက်ခြင်း () သည် စက္ကန့်အနည်းငယ်မျှသာရှိနိုင်သည်။ Usleep () PHP ၏ကိုယ်ပိုင်စီစဉ်ခြင်းယန္တရားနှင့်စနစ်တိကျမှန်ကန်မှုကန့်သတ်ချက်များကြောင့်တည်ငြိမ်သောအဆင့်မြင့်ထိန်းချုပ်မှုကိုရရှိရန်မဖြစ်နိုင်ပါ။
ဤပြ problem နာကိုဖြေရှင်းရန် The Time_Nanosleep () လုပ်ဆောင်ချက်သည်ပိုမိုကောင်းမွန်သောနှောင့်နှေးမှုကိုထိန်းချုပ်ထားသောနည်းလမ်းဖြစ်သည်။ ဤဆောင်းပါးသည်တိကျသောနှောင့်နှေးမှုကိုထိန်းချုပ်ရန် Microtime ( Time_Nanosleep) ကိုမည်သို့ပေါင်းစပ်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
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 (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";
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 အတွက်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။