PHP တွင် Time_Nanosleep သည်နှောင့်နှေးမှုများကိုတိကျသောထိန်းချုပ်မှုများအတွက်လုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ၎င်းသည် အိပ်စက်ခြင်း သို့မဟုတ် USLEEP ထက်ပိုမိုမြင့်မားသောယာယီ resolution ကိုပေးသည်။ သို့သော် developer များက Time_Nanosleep ကို အသုံးပြုသောအခါ၎င်းသည် "အလုပ်လုပ်ပုံမပေါ်" သောပြ problems နာများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဤဆောင်းပါးသည်ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက်များနှင့် debugging နည်းလမ်းများကိုဆွေးနွေးပါမည်။
<?php
echo "စက်နှိုး...\n";
time_nanosleep(0, 500000000); // ခေတ္တရပ်ဆိုင်းခြင်း0.5စက်ဏန့်
echo "အပြီးသတ်...\n";
?>
ဤဥပမာတွင်ပရိုဂရမ်သည် "Start ... " ထုတ်ယူပြီးနောက် output ကို output လုပ်ပြီးနောက် 0.5 စက္ကန့်ကြာရပ်ဆိုင်းသင့်သည်။
အကယ်. သင်သည်အလွန်တိုတောင်းသောနှောင့်နှေးမှုများကိုသုံးရန်ကြိုးစားပါက (ထိုကဲ့သို့သောမီလီစက္ကန် 100 စသည့်) ကိုသုံးရန်ကြိုးစားပါက terminal သို့မဟုတ် browser output မှနှောင့်နှေးမှုများကိုရှာဖွေရန်ခက်ခဲသည်။ ဥပမာအားဖြင့်:
time_nanosleep(0, 100000); // 0.1毫စက်ဏန့်
ဒီအချိန်မှာနှောင့်နှေးမှုကအရမ်းတိုတယ်။
အကယ်. သင်သည် time_nanosleep ကို ဝဘ်စာမျက်နှာတစ်ခုတွင်အသုံးပြုပါကဘရောက်ဇာသည်ဆာဗာဘက်တွင်အလယ်အလတ်ထုတ်လုပ်မှုကိုချက်ချင်းပြသမည်မဟုတ်ပါ။ ၎င်းသည်ဆာဗာဘက်တွင် 0.5 စက္ကန့်ကြာရပ်ဆိုင်းထားလျှင်ပင်, စာမျက်နှာတစ်ခုလုံးသည်ပြန်ဆိုခြင်းမပြုမီဘရောက်ဇာသည်အကြောင်းအရာကိုမပြနိုင်ပါ။
ဖြေရှင်းနည်းမှာ Buffer Control function ကိုအသုံးပြုရန်ဖြစ်သည်။
ob_flush();
flush();
time_nanosleep(0, 500000000);
echo "ဆက်လုပ်ရန်ဆက်လက်";
သို့သော်ဝက်ဘ်ဆာဗာ၏ output buffer ချိန်ညှိချက်များ (ဥပမာ Nginx သို့မဟုတ် Apache) ၏ output ကိုကြားခံချိန်ညှိချက်များသည်အကျိုးသက်ရောက်မှုကိုအကျိုးသက်ရောက်လိမ့်မည်။
operating systems နှင့် PHP စုစည်းခြင်းပတ် 0 န်းကျင်အားလုံးသည် NANOSECONST သို့အချိန်မရွေးကိုပံ့ပိုးပေးနိုင်သည်မဟုတ်ပါ။ အချို့သောပလက်ဖောင်းများတွင် Time_nanosleep သည် ခန့်မှန်းခြေအကောင်အထည်ဖော်မှုကိုအဆင့်မြင့်အကောင်အထည်ဖော်မှုသို့ကျဆင်းသွားနိုင်သည်။ သင်အမှန်တကယ်နှောင့်နှေးမှုကိုအတည်ပြုရန် HRTITY (TRUS) ကို သုံးနိုင်သည်။
$start = hrtime(true);
time_nanosleep(0, 500000000);
$end = hrtime(true);
echo "အချိန်နှောင့်နှေး: " . ($end - $start) / 1e6 . " 毫စက်ဏန့်";
အကယ်. output သည် Millisecond 500 ထက် ပို. ပိုကြီးလျှင်စနစ်အဆင့်သည်တိကျသောနှောင့်နှေးမှုကိုမထောက်ခံကြောင်းဆိုလိုသည်။
အကယ် . သင်၏ PHP script ကို Runtime တွင်ပြန့်ပွားပါက (အသုံးပြုသူဖျက်သိမ်းခြင်း, အချိန်ကုန် ခြင်း , image_user_abort (true) ကို ချိန်ညှိခြင်းဖြင့်စစ်ဆေးနိုင်သည်။ :
ignore_user_abort(true);
time_nanosleep(1, 0);
HRItime () သည်နှောင့်နှေးမှုများကိုအတည်ပြုရန်အတွက်စံနမူနာပြရန်အကောင်းဆုံးဖြစ်သည်။
command line ပတ်ဝန်းကျင်ရှိ output သည်အချိန်နှင့်တပြေးညီဖြစ်ပြီး အချိန် _nanosleep ၏အပြုအမူကိုလေ့လာရန်ပိုမိုလွယ်ကူစေသည်။
php test_sleep.php
ပရိုဂရမ်တွင်သစ်ထုတ်လုပ်ရေးအချက်များထည့်ပါ။
file_put_contents('/var/log/sleep.log', date('H:i:s') . " before\n", FILE_APPEND);
time_nanosleep(0, 500000000);
file_put_contents('/var/log/sleep.log', date('H:i:s') . " after\n", FILE_APPEND);
မှတ်တမ်းနှစ်ခုအကြားအချိန်ကွာခြားချက်ကိုလေ့လာခြင်းသည်နှောင့်နှေးမှုသည်ထိရောက်မှုရှိမရှိထိရောက်စွာဆုံးဖြတ်နိုင်သည်။
Time_Nanosleep ကို ကြိမ် နှုန်း မြင့်မားစွာအသုံးပြုပါက Pause သည်အမှန်တကယ်ဖြစ်ပျက် မှု ရှိမရှိဆုံးဖြတ်ရန် CPU အသုံးပြုမှုလျော့နည်းသွားခြင်းရှိမရှိကို CPU အသုံးပြုမှုလျော့နည်းသွားသည်။
သင် https://gitbox.net/api/piing သို့တောင်းဆိုမှုများကိုသင်ပို့ပေးပါကတောင်းဆိုမှုတစ်ခုစီအကြား 0.25 စက္ကန့်ကြာရပ်ဆိုင်းရန်လိုအပ်သည်ဆိုပါစို့။
for ($i = 0; $i < 5; $i++) {
file_get_contents("https://gitbox.net/api/ping");
echo "1 ။ $i တောင်းဆိုမှုကိုပြီးစီးခဲ့သည်\n";
time_nanosleep(0, 250000000); // 250毫စက်ဏန့်
}
CLI နှင့် HRTITION () ကိုပေါင်းစပ်ခြင်း () , သင်သည်နှောင့်နှေးသောအကျိုးသက်ရောက်မှုကိုပိုမိုတိကျစွာအတည်ပြုနိုင်သည်။
Time_Nanosleep သည် PHP တွင်လက်တွေ့ကျကျရှုမြင်ပြီးနားလည်မှုလွဲမှုနှောင့်နှေးခြင်းဖြစ်သည်။ ၎င်းသည်မမှန်ကန်ပါကပလက်ဖောင်းပံ့ပိုးမှု, ကွပ်မျက်မှုပတ်ဝန်းကျင်နှင့် output buffering ယန္တရားဖြင့်ကန့်သတ်ချက်ရှိသည်။ ဤကွဲပြားခြားနားမှုများကိုနားလည်ခြင်းနှင့် debugging နည်းစနစ်များကိုပေါင်းစပ်ပြီးပိုမိုတိကျသောနှောင့်နှေးထိန်းချုပ်မှုရရှိရန် Time_Nanosleep ကို ထိရောက်စွာအသုံးပြုနိုင်သည်။