PHP တွင်နှောင့်နှေးလုပ်ဆောင်မှုများပြုလုပ်သည့်အခါ အိပ်စက်ခြင်း () နှင့် USEEP () USEEP () သည်အများဆုံးဖော်ပြထားသောလုပ်ဆောင်ချက်များဖြစ်သည်။ သို့သော် Time_Nanosleep () သည် ပိုမိုတိကျသောနှောင့်နှေးမှုထိန်းချုပ်ရန်လိုအပ်သည့်အခါအထူးသဖြင့် nanosecond တိကျစွာကမူမရှိမဖြစ်လိုအပ်သောကိရိယာတစ်ခုဖြစ်လာသည်။ ဤဆောင်းပါးသည် အချိန်၏ အသုံးပြုမှုနည်းလမ်းများနှင့်အများအားဖြင့်အကောင်းဆုံးအလေ့အကျင့်များနှင့်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်ဆက်စပ်လုံခြုံရေးနှင့်စွမ်းဆောင်ရည်ဆိုင်ရာထောင်ချောက်များကိုရှောင်ရှားရန်ဤဆောင်းပါးသည်အသေးစိတ်လေ့လာသုံးသပ်လိမ့်မည်။
Time_Nanosleep () သည် PHP မှပေးသော function တစ်ခုဖြစ်ပြီးသတ်မှတ်ထားသောအချိန်အတွက်ပရိုဂရမ်ကွပ်မျက်မှုကိုသတ်မှတ်ထားသောအချိန်အတွက်ခေတ္တရပ်ဆိုင်းထားနိုင်သည်။ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
bool time_nanosleep(int $seconds, int $nanoseconds)
$ စက္ကန့် - Integer စက္ကန့်။
$ nanoseconds : Integer Nanoseconds (0 ~ 999999999999) ။
ပြန်လာသော စစ်မှန်သောနည်းလမ်းများ သည်အောင်မြင်မှုကိုဆိုလိုသည်။
မှားယွင်းသော ပြန်လာခြင်းသို့မဟုတ်ခြွင်းချက်တစ်ခုပစ်ခြင်းသည်အမှားတစ်ခုသို့မဟုတ်ကြားဖြတ်ခြင်းကိုဖော်ပြသည်။
သတိပြုသင့်သည်ဆိုပါကစောင့်ဆိုင်းနေသည့်ကာလအတွင်း system signal ကိုစနစ်အချက်ပြမှုဖြင့်ကြားဖြတ်လျှင်၎င်းသည်မပြီးဆုံးသေးသောအချိန်ပါ 0 င်သည့်ခင်းကျင်းမှုကိုပြန်ပေးလိမ့်မည်။
[
"seconds" => int,
"nanoseconds" => int
]
အသုံးပြုရန်အလွယ်ကူဆုံးနည်းလမ်းမှာအောက်ပါအတိုင်းဖြစ်သည် -
<?php
echo "စတင်ရန်စောင့်ပါ...\n";
time_nanosleep(1, 500000000); // ခေတ္တရပ်ဆိုင်းခြင်း 1.5 စက်ဏန့်
echo "အဆုံးကိုစောင့်ပါ。\n";
အထက်ပါကုဒ်သည်ပရိုဂရမ်ကို 1.5 စက္ကန့်ဖြင့်ခေတ္တရပ်တန့်ပြီးနောက်ဆက်တွဲယုတ္တိဗေဒကိုဆက်လက်လုပ်ဆောင်နေသည်။
ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင် Time_Nanosleep () အချက်ပြပြတ်တောက်မှုကြောင့်ကြိုတင်လာနိုင်သည်။ ဒီမှာကိုင်တွယ်ဖြေရှင်းဖို့လုံခြုံတဲ့နည်းလမ်းတစ်ခုပါ။
<?php
$seconds = 2;
$nanoseconds = 0;
do {
$result = time_nanosleep($seconds, $nanoseconds);
if (is_array($result)) {
// ကြားဖြတ်လျှင်,ကျန်ရှိသောအချိန်ကို update လုပ်ပါ
$seconds = $result["seconds"];
$nanoseconds = $result["nanoseconds"];
echo "signal အားဖြင့်ကြားဖြတ်,နောက်တဖန်စောင့်ပါ...\n";
}
} while (is_array($result));
echo "နှောင့်နှေးပြီးစီးခဲ့。\n";
ဤစာအရေးအသားနည်းလမ်းသည်တစ်ဝက်ကြားမှနှောင့်နှေးနေသည့်တိုင်နှောင့်နှေးမှုအားအပြည့်အ 0 ကွပ်မျက်ခံရကြောင်းသေချာစေသည်။
Nanoseconds parameter သည်အမြင့်ဆုံးတန်ဖိုးမှာ 999999,999 ဖြစ်သည်။ ၎င်းသည်ဤတန်ဖိုးကိုကျော်လွန်လိမ့်မည်။
Warning: time_nanosleep(): nanoseconds out of range
ဖြေရှင်းနည်းမှာပိုလျှံသောအပိုင်းကိုစက္ကန့်ပိုင်းအထိပြောင်းလဲရန်ဖြစ်သည်။
$ns = 1_500_000_000; // ကေျာ်လွန် 1 စက်ဏန့်的纳စက်ဏန့်数
$seconds = intdiv($ns, 1_000_000_000);
$nanoseconds = $ns % 1_000_000_000;
time_nanosleep($seconds, $nanoseconds);
အကယ်. သင်သည်အချိန်ကိုတိကျသောထိန်းချုပ်မှုလိုအပ်ပါက HRT အချိန် နှင့်ပေါင်းစပ်။ အသုံးပြုနိုင်သည်။
$start = hrtime(true); // 纳စက်ဏန့်计时器
time_nanosleep(0, 500000000); // စောင့် 0.5 စက်ဏန့်
$end = hrtime(true);
$elapsed = ($end - $start) / 1e9;
echo "အမှန်တကယ်အချိန် - စားသုံး: {$elapsed} စက်ဏန့်\n";
လုပ်ဆောင်ချက် | ဟုတ်မှန်ရေး | ကြားဖြတ်ရန်ဖြစ်နိုင်သည် | ပလက်ဖောင်းပံ့ပိုးမှု |
---|---|---|---|
အိပ် () | စက်ဏန့် | ဟုတ်ကဲ့ | Cross-platform |
USEEEP () | microseconds | မဟုတ် | Windows <= PHP 5.3 မပံ့ပိုးပါ |
time_nanosleep () | nonoseconds | ဟုတ်ကဲ့ | Cross-platform |
foreach ($requests as $request) {
call_api("https://gitbox.net/api/send", $request);
time_nanosleep(0, 250000000); // တိုင်း 250ms တောင်းဆိုချက်
}
သယံဇာတပြိုင်ဆိုင်မှုကိုရှောင်ရှားရန် Multi-Threaded သို့မဟုတ် Multi-process လုပ်ငန်းများကိုအသုံးပြုသောအခါအနည်းငယ်နှောင့်နှေးမှုအနည်းငယ်ကိုထည့်သွင်းရန်အနည်းငယ်နှောင့်နှေးနိုင်သည် -
for ($i = 0; $i < 5; $i++) {
fork_process($i);
time_nanosleep(0, 100000000); // 100ms နေှာင့်နေှး,ပ conflicts ိပက်ခများကိုရှောင်ပါ
}
ဥပမာ CLI animation လုပ်သည့်အခါ
$frames = ['-', '\\', '|', '/'];
while (true) {
foreach ($frames as $frame) {
echo "\rတင်ဆောင် $frame";
time_nanosleep(0, 100000000); // 0.1 စက်ဏန့်
}
}
Time_Nanosleep () သည်အဆင်ပြေသော်လည်း၎င်းသည်အရင်းအမြစ်ပိတ်ဆို့ခြင်းဆိုင်ရာတိုက်ခိုက်မှုများအတွက်လည်းအသုံးပြုနိုင်သည်။
// 恶意နေှာင့်နေှး造成的服务阻断
time_nanosleep(10, 0);
အကြံပြုချက် -
သုံးစွဲသူများနှောင့်နှေး parameters တွေကိုမထိန်းချုပ်ရန်ခွင့်မပြုပါနှင့်,
အမြင့်ဆုံးကန့်သတ်ချက်များနှင့် log နှောင့်နှေးမှတ်တမ်းများကို log;
အဓိကဖြစ်စဉ်ကိုကာကွယ်ရန်အချိန်ကုန်ခြင်းနှင့်စောင့်ကြည့်ရေးယန္တရားများနှင့်ပူးပေါင်းပါ။
Time_Nanosleep () သည်မြင့်မားသော latency control ကိုထောက်ပံ့ပေးသောအစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည် ။ ၎င်းကိုအသုံးပြုရန်အတွက်ပရိုဂရမ်ကိုနှောင့်နှေးခြင်း, တစ်ပြိုင်တည်းထိန်းချုပ်ခြင်းနှင့်အခိုးအငွေ့ဖြင့်ပိုမိုပြောင်းလွယ်ပြင်လွယ်။ သို့သော်အလွန်အကျွံသို့မဟုတ်မလျော်ကန်သောအသုံးပြုမှုသည်စွမ်းဆောင်ရည်စွန့်ပစ်ပစ္စည်းနှင့်လုံခြုံမှုဆိုင်ရာပြ issues နာများကိုဖြစ်စေနိုင်သည်။ ထို့ကြောင့်၎င်းမူများကိုကျွမ်းကျင်မှုကို အခြေခံ. ၎င်းကိုသတိထားပြီးမဟာဗျူဟာကျကျ အသုံးပြု. PHP developer တိုင်းတွင်စွမ်းဆောင်နိုင်သည့်စွမ်းရည်ဖြစ်သည်။