စွမ်းဆောင်ရည်မြင့်မားသောသို့မဟုတ်အချိန် - အထိခိုက်မခံသော PHP applications များကိုရေးသည့်အခါတစ်ခါတစ်ရံတွင်မီလီစက္ကန်းများသို့မဟုတ်ပိုကောင်းသော microseconds သို့မဟုတ် nanosecond အဆင့်များကဲ့သို့သောအချိန်တိုအတွင်းကွပ်မျက်ခံရရန်အစီအစဉ်ကိုကျွန်ုပ်တို့လိုအပ်သည်။ တိကျမှုအချိန်ထိန်းချုပ်မှု, တောင်းခံမှုတောင်းဆိုမှုများ, စက်ပစ္စည်းများနှင့်အပြန်အလှန်ဆက်သွယ်သောအခါဤလိုအပ်ချက်သည်အထူးအရေးကြီးသည်။ ကံကောင်းထောက်မစွာပင် PHP သည် paoseconds နှင့်တိကျမှန်ကန်မှုရှိသောခေတ္တရပ်တန့်စေသော function time_nanosleep () ကိုထောက်ပံ့ပေးသည်။ ဤဆောင်းပါးသည်သင့်အားဤလုပ်ဆောင်မှု၏အသုံးပြုမှုနှင့်ကြိုတင်ကာကွယ်ရေးကိုနက်နက်နဲနဲနားလည်ခြင်းနှင့်သင့်အားပြောင်းလွယ်ပြင်လွယ်ကျွမ်းကျင်စေရန်ကူညီရန်လက်တွေ့ကျသောဥပမာများကိုပေးလိမ့်မည်။
Time_Nanosleep () PHP ရှိ function တစ်ခုဖြစ်ပြီး PHP တွင်အရေးယူခြင်းသည်စက္ကန့်များနှင့် nanoseconds များကိုသတ်မှတ်ရန်အစီအစဉ်ကိုတားဆီးထားသည်။ function ကိုလက်မှတ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool time_nanosleep ( int $seconds , int $nanoseconds )
$ စက္ကန့် - alteger, ခေတ္တရပ်တန့်ဖို့စက္ကန့်အရေအတွက်ကိုညွှန်ပြ။
$ nanoseconds : Integer သည်ခေတ္တရပ်တန့်ရန် nanoseconds အရေအတွက်ကိုညွှန်ပြသည့် (0 နှင့် 999999999999) ။
ဤလုပ်ဆောင်ချက်သည်တစ်စက္ကန့်ထက်နည်းသောအချိန်မနည်းကိုခေတ္တရပ်တန့်ရန်အသုံးပြုနိုင်သည်။
PHP တွင်အသုံးပြုသော PAUSS PAUSTIONS လုပ်ဆောင်ချက်နှစ်ခုပါရှိသည်။ အိပ်စက်ခြင်း () နှင့် USEEP () ။ သူတို့အကြားခြားနားချက်များမှာအောက်ပါအတိုင်းဖြစ်သည် -
အိပ်စက်ခြင်း (INT $ စက္ကန့်အနည်းငယ်) - စက္ကန့်အနည်းငယ်သာတိကျမှန်ကန်စေသည်။
USEEEP (Int $ microseconds) - microseconds (တစ်စက္ကန့်တစ်သန်း) အတွက်တိကျမှန်ကန်မှုရှိစေရန်။
Time_nanosleep (INT $ nanoseconds) ကို (တစ်စက္ကန့်အတွင်း Nanoseconds) - nanoseconds (စက္ကန့်တစ်စက္ကန့်တစ်စက္ကန့်တစ်စက္ကန့်တစ်စက္ကန့်တစ်စက္ကန့်တစ်စက္ကန့်တစ်စက္ကန့်) နှင့်တိကျမှန်ကန်မှုကိုထောက်ခံသည်။
ထို့ကြောင့် Time_Nanosleep () သည် သင်ပိုမိုမြင့်မားသောတိကျမှုအချိန်ထိန်းချုပ်ရန်လိုအပ်သည့်အခါပိုမိုကောင်းမွန်သောရွေးချယ်မှုဖြစ်သည်။
ဤတွင် 0.5 စက္ကန့်အတွက်ခေတ္တရပ်တန့်ခြင်း,
<?php
echo "Start: " . microtime(true) . PHP_EOL;
time_nanosleep(0, 500000000); // ခေတ္တရပ်ဆိုင်းခြင်း 0.5 စက်ဏန့်
echo "End: " . microtime(true) . PHP_EOL;
?>
output ကိုကြည့်ပါလိမ့်မယ်:
Start: 1716026901.12345
End: 1716026901.62346
သင်မြင်သည့်အတိုင်းပရိုဂရမ်သည် 0.5 စက္ကန့်ခန့်အတွက်ခေတ္တရပ်တန့်သွားသည်။
သငျသညျ 200 milliseconds တိုင်းအချို့သောကုဒ်အချို့ကို execute ချင်တယ်ဆိုပါစို့, အောက်ပါနည်းလမ်းကိုသုံးနိုင်သည်ဆိုပါစို့။
<?php
for ($i = 0; $i < 5; $i++) {
echo "Tick $i at " . microtime(true) . PHP_EOL;
time_nanosleep(0, 200000000); // 200 毫စက်ဏန့်
}
?>
ဤစာအရေးအသားနည်းလမ်းသည်အခိုးအငှေ့ဟန်ပြုခြင်းတောင်းဆိုမှုများကိုပေးပို့ခြင်း, အချိန်ကုန်ခြင်းဆိုင်ရာမှတ်တမ်းများ,
time_nanosleep () အချို့သောစနစ်များတွင် signal အနှောင့် အယှက် များ (ဥပမာ posix အချက်ပြချက်များကဲ့သို့) အလျင်အမြန်ကြားဖြတ်ခြင်းကြောင့်ကြိုတင်လာနိုင်သည်။ ဤကိစ္စတွင် loop retry ယန္တရားကိုအသုံးပြုနိုင်သည်။
<?php
$seconds = 0;
$nanoseconds = 250000000; // 250 毫စက်ဏန့်
do {
$result = time_nanosleep($seconds, $nanoseconds);
} while ($result === false && ($error = error_get_last()) && strpos($error['message'], 'interrupted') !== false);
?>
သာမန် application အများစုသည်ထိုကဲ့သို့သောကြားဖြတ်နှောင့်ယှက်မှုများနှင့်ကြုံတွေ့ရလိမ့်မည်မဟုတ်သော်လည်းဤကာကွယ်မှုအမျိုးအစားသည် Multi-Threaded သို့မဟုတ်အလွန်အမင်းတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်အကြံပြုသည်။
သငျသညျဒေတာ interface ကို 1 မီလီစက္ကန်တိုင်းဒေတာ interface ကိုစစ်တမ်းကောက်ယူရန်လိုအပ်သည့် hardware devices များအတွက် API ကိုတီထွင်နေကြသည်ဆိုပါစို့, သင်ဤကဲ့သို့သောရေးသားနိုင်ပါတယ်:
<?php
$url = 'https://gitbox.net/api/device/status';
for ($i = 0; $i < 1000; $i++) {
$response = file_get_contents($url);
echo "[$i] Response: $response" . PHP_EOL;
time_nanosleep(0, 1000000); // 1 毫စက်ဏန့်
}
?>
ဤစာအရေးအသားနည်းလမ်းသည် CPU ၏အလုပ်အကိုင်ပေါက်ကွဲမှုဖြစ်ပွားခြင်းမရှိဘဲအဆင့်မြင့်အချက်အလက်များကိုဆွဲဆောင်နိုင်သည်။
Time_Nanosleep () PHP 5 ကတည်းကရရှိနိုင်ပါသည်။ အားလုံးနီးပါးဗားရှင်းအားလုံးနီးပါးတွင်ရရှိနိုင်ပါသည်။
၎င်းသည် Windows နှင့် Unix ကဲ့သို့စနစ်များပေါ်တွင် run နိုင်သည်။
၎င်းသည် nanosecond ဝင်လာသောအဝင်ကိုထောက်ပံ့သော်လည်းတိကျမှန်ကန်မှုသည်စနစ်နာရီ resolution ကိုအမှန်တကယ်မှီခိုသည်။ အချို့သောပလက်ဖောင်းများတွင်အနိမ့်ဆုံးတိကျမှန်ကန်မှုသည် microseconds တွင်ရှိနေဆဲဖြစ်နိုင်သည်။
PHP တွင် Time_Nanosleep () PHP တွင်အစွမ်းထက်သော်လည်းမကြာခဏသတိမထားမိသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ၎င်းသည်အထူးသဖြင့်အချိန်ထိန်းချုပ်ရန်လိုအပ်သောအလုပ်များအတွက်ပရိုဂရမ်ကိုတင်းကြပ်စွာထိန်းချုပ်နိုင်စွမ်းရှိနိုင်စွမ်းရှိသော developer များကိုလည်းထောက်ပံ့ပေးသည်။ ဤသင်ခန်းစာ၏ရှင်းပြချက်နှင့်ဥပမာများအရသင်၏လျှောက်လွှာ၏ထိန်းချုပ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်မည်သို့ပြောင်းရန်မည်သို့ပြောင်းလဲရမည်ကိုသင်ကျွမ်းကျင်စွာပြုလုပ်နိုင်သည်။ အသုံးပြုမှုနှင့်စနစ်ကန့်သတ်ချက်များကိုအနှောင့်အယှက်ဖြစ်စေရန်အနှောင့်အယှက်ပေးရန်သင်ဂရုပြုသရွေ့ Time_Nanosleep () အမျိုးမျိုးသောအခြေအနေတွင်လုံခြုံစွာနှင့်တိကျစွာအသုံးပြုနိုင်သည်။