လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> တိကျသောအိပ်စက်ခြင်းအချိန်ကိုထိန်းချုပ်ရန် Time_NanOSelep ကိုသုံးပါ

တိကျသောအိပ်စက်ခြင်းအချိန်ကိုထိန်းချုပ်ရန် Time_NanOSelep ကိုသုံးပါ

gitbox 2025-05-28

PHP တွင်ကျွန်ုပ်တို့သည်ပရိုဂရမ်ကိုအချိန်အတိုင်းအတာတစ်ခုအထိခေတ္တရပ်တန့်ရန်လိုသည်။ များသောအားဖြင့်လူများသည် အိပ်စက်ခြင်း () function ကို သုံး. ဤအရာကိုရရှိရန်အတွက် (သို့သော် အိပ်စက်ခြင်း) သည်စက္ကန့်အနည်းငယ်မျှသာဖြစ်ပြီးစက္ကန့်အနည်းငယ်သည်စက္ကန့်အနည်းငယ်ဖြစ်ပြီး, ယခုအချိန်တွင် PHP သည် Time_Nanosleep () function ကိုထောက်ပံ့ပေးသည်။

Time_Nanosleep ဆိုတာဘာလဲ။

TIME_NANOSESEEP () သည်လက်ရှိဖြစ်စဉ်ကိုစက္ကန့်ပိုင်းနှင့် nanoseconds များခေတ္တရပ်တန့်ရန် PHP 5.0.0 နှင့်အထက်တွင်ဖော်ပြထားသော function တစ်ခုဖြစ်သည်။ အိပ်စက်ခြင်း နှင့်နှိုင်းယှဉ်လျှင်၎င်းသည်စက္ကန့်ပိုင်းအထိသာတိကျနိုင်သည်, Time_Nanosleep () သည် ခေတ္တရပ်တန့်ရန်ခေတ္တရပ်တန့်ရန်သင့်အားခွင့်ပြုသည်။

function ကိုအဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုအောက်ပါအတိုင်းဖြစ်သည် -

 bool time_nanosleep(int $seconds, int $nanoseconds)
  • $ စက္ကန့် - စက္ကန့်အရေအတွက်ကြာချိန်,

  • $ nanoseconds : Tanoseconds ဆိုင်းငံ့ထားသည့် nanoseconds အရေအတွက်သည် 0 မှ 999,999999999 အထိရှိသည်။

အကယ်. ခေတ္တနားကအောင်မြင်မှုရနိုင်လျှင် function သည် မှန်ကန် ပါက၎င်းသည်အလယ်တွင်အချက်ပြမှုဖြင့်အနှောင့်အယှက်ဖြစ်စေပါကကျန်ရှိသောအချိန်ပါ 0 င်သည့်နေရာတစ်ခုကိုပြန်လည်ရရှိစေသည်။

အသုံးပြုမှုဥပမာ

ဤတွင် 1 စက္ကန့်နှင့် 500 မီလီစက္ကန့်များကိုမည်သို့ခေတ္တ ရပ်တန့်ရန် ပုံဥပမာတစ်ခုဖြစ်ပြီး (i.e. 1.5 စက္ကန့်) -

 <?php
echo "စတင်ချိန်:" . microtime(true) . PHP_EOL;

$seconds = 1;
$nanoseconds = 500000000; // 500 မီလီစက္ကန့် = 500,000,000 nonoseconds

if (time_nanosleep($seconds, $nanoseconds)) {
    echo "အိပ်စက်အနားယူချိန်:" . microtime(true) . PHP_EOL;
} else {
    echo "အိပ်စက်ခြင်းပြတ်တောက်" . PHP_EOL;
}
?>

RAP ရလဒ်သည် 1.5 စက္ကန့်ခန့်ကွာခြားချက်ဖြင့် timestamp ကိုနှစ်ကြိမ်ပြလိမ့်မည်။

interrupts ကိုင်တွယ်

အကယ်. time_nanosleep () ကို system signal ကိုကြားဖြတ်လျှင်ကျန်စက္ကန့်များနှင့် nanoseconds များပါ 0 င်သည့် array ကိုပြန်လာလိမ့်မည်။ Time_Nanosleep () ကို ဆက်လက်အိပ်စက်ခြင်းကိုဆက်လက်ထားရှိရန် Return Value အရထပ်မံခေါ်ဆိုနိုင်သည်။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <?php
$seconds = 2;
$nanoseconds = 0;

while (true) {
    $result = time_nanosleep($seconds, $nanoseconds);
    if ($result === true) {
        echo "အိပ်ပါ" . PHP_EOL;
        break;
    } elseif (is_array($result)) {
        echo "အိပ်စက်ခြင်းပြတ်တောက်,ကျန်ရှိသောအချိန်:{$result['seconds']}စက်ဏန့် {$result['nanoseconds']}nonoseconds" . PHP_EOL;
        $seconds = $result['seconds'];
        $nanoseconds = $result['nanoseconds'];
    } else {
        echo "အိပ်ရန်ပျက်ကွက်ခဲ့သည်" . PHP_EOL;
        break;
    }
}
?>

ဤစာအရေးအသားသည် signal ကိုအနှောင့်အယှက်ပေးပြီးနောက်ကြိုတင်သတ်မှတ်ထားသောအိပ်စက်ခြင်းအချိန်ကိုဆက်လက်ဖြည့်စွက်နိုင်ကြောင်းသေချာစေသည်။

HTTP တောင်းဆိုမှုများနှင့်ပေါင်းစပ်ထားသောအသုံးပြုမှုအခြေအနေများဥပမာ

သင်တောင်းဆိုမှုတစ်ခုစီအကြားမီဒီယာ 200 အတွက်အငြင်းပွားမှုများနှင့်တွဲဖက်ခြင်းဖြင့် တောင်းဆိုခြင်း နှင့် time_nanosleep နှင့် တွဲဖက်. တောင်းခံရန်တောင်းဆိုခြင်းကိုသင်ပို့နိုင်သည်ဆိုပါစို့။ ဤတွင်နမူနာကုဒ်ဖြစ်သည်။

 <?php
$urls = [
    "https://gitbox.net/api/data1",
    "https://gitbox.net/api/data2",
    "https://gitbox.net/api/data3",
];

foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    if (curl_errno($ch)) {
        echo "တောင်းဆိုမှုပျက်ကွက်:" . curl_error($ch) . PHP_EOL;
    } else {
        echo "တောင်းဆိုမှုအောင်မြင်ခဲ့:" . substr($response, 0, 50) . "..." . PHP_EOL;
    }
    curl_close($ch);

    // ခေတ္တရပ်ဆိုင်းခြင်း 200 မီလီစက္ကန့်
    time_nanosleep(0, 200000000);
}
?>

ဤကုဒ်သည် 0 င်ရောက်စွက်ဖက်မှုသုံးခုကိုအလှည့်အပြောင်းတစ်ခုဖြစ်ပြီးတောင်းဆိုမှုတစ်ခုစီပြီးနောက် 200 မီလီစက္ကန့်များအတွက်ခေတ္တရပ်တန့်စေပြီးမကြာခဏတောင်းဆိုမှုများကိုရှောင်ရှားရန်ဖြစ်သည်။

အကျဉ်းချုပ်

  • Time_Nanosleep () PHP အစီအစဉ်များကိုစက္ကန့်ပိုင်းနှင့် nanosecond တိကျသော PHP အစီအစဉ်များကိုခေတ္တရပ်ရန်ခွင့်ပြုသည်။

  • ၎င်းသည်ရိုးရာ အိပ်စက်ခြင်း () နှင့် USEEP () ထက် ပို. ပြောင်းလွယ်ပြင်လွယ်သည်။

  • ပရိုဂရမ်၏ကြံ့ခိုင်မှုကိုသေချာစေရန်အချက်ပြကြားဖြတ်မှုကိုကိုင်တွယ်ရန်ဂရုပြုပါ။

  • Time_Nanosleep () မြန်နှုန်းကန့်သတ်ခြင်း,

အချိန်အားဖြင့် time_nanosleep ကို အသုံးပြု. () တွင်သင်၏ PHP application များသည်အချိန်ထိန်းချုပ်မှုတွင်ပိုမိုတိကျပြီးထိရောက်မှုရှိနိုင်သည်။