PHP တွင်တိကျသောအမဲလိုက်မှုနှင့်ဆက်ဆံရာတွင် Time_Nanosleep () သည်အတော်လေးရှားပါးသော်လည်းအလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်ဖြစ်သည်။ developer များသည် developer များက scrirosecond အဆင့်သို့ scrirosecond အဆင့်သို့ခေတ္တရပ်ဆိုင်းထားရန်ခွင့်ပြုသည်။ သို့သော်ဤလုပ်ဆောင်မှုသည် System of System of System of System of System ၏ encapsleep ၏ encapsulation တစ်ခုဖြစ်သောကြောင့်၎င်းသည်မတူညီသော operating system များတွင်ကွဲပြားခြားနားမှုရှိနိုင်သည်။ ဒီတော့ time_nanosleep () သည် Windows, Linux နှင့် Macos တို့တွင်ကောင်းမွန်စွာအလုပ်လုပ်ပါသလား။ ဤစာတမ်းသည်အမှန်တကယ်တိုင်းတာမှုများမှတစ်ဆင့်ဤပြ problem နာကိုဆန်းစစ်ထားသည်။
bool time_nanosleep(int $seconds, int $nanoseconds)
ဤလုပ်ဆောင်ချက်သည်သတ်မှတ်ထားသောအချိန်အတွက် script ကိုခေတ္တရပ်တန့်ပြီးတိကျမှန်ကန်မှုသည် nanosecond အဆင့်သို့ရောက်ရှိနိုင်သည်။ ၎င်း၏ပြန်လာတန်ဖိုးမှာ boolean ဖြစ်ပြီးပြတ်တောက်သည့်အခါ,
ဥပမာအားဖြင့်,
<?php
echo "Start\n";
time_nanosleep(0, 500000000); // 0.5 စက်ဏန့်
echo "End\n";
?>
Time_Nanosleep ၏ Cross-platform ပလက်ဖောင်းကိုလိုက်လျောညီထွေဖြစ်စေရန် () , အောက်ပါပတ်ဝန်းကျင်တွင်၎င်းကိုကျွန်ုပ်တို့စစ်ဆေးခဲ့သည်။
Windows 11 (Xampp PHP 8.2 ကိုအသုံးပြုခြင်း)
Ubuntu 22.04 (PHP 8.2, Apache2 ကိုအသုံးပြုသည်)
Macos Sonoma (PHP 8.3 ကို Homebrew မှတဆင့် install လုပ်သည်)
စက်သုံးစက်များတွင်စမ်းသပ်မှု scripts များသည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
$start = microtime(true);
time_nanosleep(0, 500000000); // ခေတ္တရပ်ဆိုင်းခြင်း0.5စက်ဏန့်
$end = microtime(true);
echo "အချိန်ကုန်စေသော:" . ($end - $start) . " စက်ဏန့်\n";
?>
Windows ပတ် 0 န်းကျင်တွင် Time_Nanosleep () သည် ပုံမှန်အားဖြင့်အသုံးပြုနိုင်သော်လည်း ၎င်း၏တိကျမှန်ကန်မှုကို Windows စနစ်၏ timer စနစ်၏ယန္တရားကြောင့်ကန့်သတ်ထားသည်။ function call ကိုယ်နှိုက်ကအမှားတစ်ခုသတင်းပို့မှာမဟုတ်ပေမယ့်အမှန်တကယ်ခေတ္တနားဖို့အချိန်သည် 0.5 စက္ကန့်ထက်အနည်းငယ်ပိုမိုမြင့်မားသည်။
Linux သည် nanosleep () နှင့် time_nanosleep အတွက်ဇာတိပံ့ပိုးမှုပလက်ဖောင်းသည်ဤစနစ်တွင်အကောင်းဆုံးလုပ်ဆောင်သည်။ စမ်းသပ်မှုတွင်နှောင့်နှေးအချိန်သည်မျှော်လင့်ထားသည့်အချိန်သည်မျှော်လင့်ထားသည့် 0.5 စက္ကန့်အထိအလွန်နီးကပ်သည် ။
MacOS သည် Unix ဗိသုကာလက်ရာအပေါ်အခြေခံပြီး noosleep () ကို အနူသီး () ကိုမူတည်သည်။ စမ်းသပ်မှုရလဒ်များအရ Linux, Time_Nanosleep () ကဲ့သို့ MACOS တွင်အလားတူလုပ်ဆောင်သည်။
စနစ်သုံးလုံးစလုံးသည်ဤလုပ်ဆောင်မှုကို run နိုင်သော်လည်းအောက်ပါအချက်များရှိသည်။
0 င်းဒိုးသည်မြင့်မားသောအိပ်စက်ခြင်းကိုမထောက်ပံ့ပါ ။ ၎င်းသည်လုပ်ဆောင်မှုသည်အမှားတစ်ခုသတင်းကိုသတင်းပို့သော်လည်း၎င်း၏နောက်ခံအလွှာသည်စစ်မှန်သော nanosecond တိကျမှန်ကန်မှုမဟုတ်ပါ။ ထို့ကြောင့် application သည်အချိန်နှင့်အလွန်အထိခိုက်မခံပါက Time_Nanosleep () 0 င်းဒိုးလက်အောက်တွင်မှီခိုရန်မထောက်ခံပါ။
အခြားနည်းလမ်းများ :
MicroSecond နှောင့်နှေးလိုအပ်ပါက USleep ကို သုံးပါ။
usleep(500000); // 0.5 စက်ဏန့်
Platf-platform တိကျသောထိန်းချုပ်မှုလိုအပ်သည့်အခြေအနေများအတွက် Active Polling ကို Microtime () နှင့်ပေါင်းစပ်နိုင်သည်။
အမှားကိုင်တွယ်ခြင်း :
အကယ်. time_nanosleep () စနစ်အချက်ပြမှုကြောင့်ကြားဖြတ်လျှင်၎င်းသည်အိပ်စက်ခြင်းကို ဆက်လက်. မအိပ်စက်နိုင်သော်လည်းမပြီးဆုံးသေးသောအချိန်ကာလသို့ပြန်သွားလိမ့်မည်။
$result = time_nanosleep(2, 0);
if (is_array($result)) {
echo "ကြားဖြတ်ခံရ,ကျန်ရစ်နေသော:{$result['seconds']} စက်ဏန့် {$result['nanoseconds']} 纳စက်ဏန့်";
}
TIME_NANOSESEEP () သည် Linux နှင့် MacOS ပလက်ဖောင်းနှစ်ခုလုံးတွင်တိကျမှန်ကန်မှုနှင့်တည်ငြိမ်မှုနှင့်တိကျမှုရှိကြောင်း, ၎င်းကို Windows တွင်အသုံးပြုနိုင်သော်လည်းတိကျမှန်ကန်မှုသည်အကန့်အတန့်အကန့်အသတ်ရှိသည်။ Platform ပလက်ဖောင်းစီမံကိန်းများတွင် developer များကိုတိကျသောလည်ပတ်နေသောပတ် 0 န်းကျင်အပေါ် အခြေခံ. သင့်လျော်သောနှောင့်နှေးလုပ်ဆောင်မှုများကိုရွေးချယ်ရန်နှင့်အချိန် - အထိခိုက်မခံသောစစ်ဆင်ရေးများကိုအလုံအလောက်စစ်ဆေးခြင်းကိုရွေးချယ်ရန်အကြံပြုသည်။
တိကျမှန်ကန်မှုကိုထပ်မံထိန်းချုပ်ရန်သို့မဟုတ်ပြတ်တောင်းပြတ်တောင်းလုပ်ငန်းမူဘောင်တစ်ခုတည်ဆောက်ရန်လိုအပ်ပါကပြင်ပအချိန်ဇယားကိုအသုံးပြုရန်သို့မဟုတ် PCNTL တိုးချဲ့ခြင်းကိုပေါင်းစပ်ခြင်းသို့မဟုတ် PCNTL တိုးချဲ့ခြင်းကိုပေါင်းစပ်ခြင်း (UNIX စနစ်များအကန့်အသတ်ဖြင့်သာ) ကိုအကောင်အထည်ဖော်ရန်ပေါင်းစပ်နိုင်သည်။ သင်၏ 0 န်ဆောင်မှုကို Linux တွင်ချထားပါက Time_Nanosleep () သည်လုံခြုံပြီးယုံကြည်စိတ်ချရသောရွေးချယ်စရာတစ်ခုဖြစ်သည်။
ပူးတွဲဖိုင် - စီမံကိန်းစစ်ဆေးမှုကုဒ် hosting address: https://gitbox.net/time-nanosleep-Demo