လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Time_Nanosleep နှင့် Ob_flush ကိုခြေလှမ်း - အဆင့်ဆင့် output အချက်အလက်များကိုရယူရန်အသုံးပြုပါ

Time_Nanosleep နှင့် Ob_flush ကိုခြေလှမ်း - အဆင့်ဆင့် output အချက်အလက်များကိုရယူရန်အသုံးပြုပါ

gitbox 2025-05-29

  • ဤလုပ်ဆောင်ချက်သည်သတ်မှတ်ထားသောစက္ကန့်ပိုင်းနှင့် nanoseconds များအတွက် script ကိုတားဆီးထားသည်။ ၎င်းသည် အိပ်စက်ခြင်း နှင့် USLEEP ထက်တိကျမှုပိုမိုမြင့်မားပြီး,

  • ob_flush ()
    PHP ၏ output buffer အကြောင်းအရာကို browser သို့အတင်းဖိအားပေးပါ။ သို့သော်ကြားခံကိုမပိတ်ပါ။ flush () နှင့်အသုံးပြုသောအခါ, အကြောင်းအရာကိုအချိန်မှန်အတွက် "တွန်း" နိုင်ပါတယ်။

မှတ်စု: output သည် browser ကိုအမှန်တကယ်ရောက်ရှိရန်သေချာစေရန်အတွက်၎င်းကို plush () နှင့်အသုံးပြုလေ့ရှိသည်။

2 ။ နမူနာကုဒ်ကိုခြေလှမ်း - အဆင့်အတန်းမှန် output ကိုအကောင်အထည်ဖော်ရန်

 <?php
// script script လုပ်ဆောင်မှုအချိန်ကန့်သတ်ပိတ်ပါ(လိုအပ်သလို)
// set_time_limit(0);

// output ကိုကြားခံဖွင့်ပါ
ob_start();

// Browser Cache နှင့် compression ကိုပိတ်ထားပါ,လက်ငင်းဒေတာထုတ်လွှင့်သေချာပါစေ
header("Content-Type: text/plain");
header("Cache-Control: no-cache");
header("X-Accel-Buffering: no"); // အတွက် Nginx cache ကိုပိတ်ပါ
// ရုပ်သိမ်းခြင်း gzip ချုံ့ခြင်း(ဆာဗာကိုပုံမှန်အားဖြင့်ဖွင့်လျှင်)
// သတ်သတ်မှတ်မှတ်နည်းလမ်းများကိုဆာဗာပတ် 0 န်းကျင်အရ configure လုပ်ထားသည်

for ($i = 1; $i <= 5; $i++) {
    echo "လက်ရှိခြေလှမ်းများ:{$i}\n";

    // Refresh Refresh PHP output ကိုကြားခံ
    ob_flush();
    flush();

    // အသုံးပြု time_nanosleep microsecond နှောင့်နှေး,0.5စက်ဏန့် = 500,000,000 纳စက်ဏန့်
    time_nanosleep(0, 500000000);
}

echo "အားလုံးခြေလှမ်းများပြီးစီးနေကြသည်!\n";
?>

ဥပမာ -

  • ob_start () - ကြားခံဖောင်ဒေးရှင်းကိုထိန်းချုပ်နိုင်အောင်သေချာစေရန် ob_start () - output buffering ကိုစတင်ပါ။

  • ပဲ့တင်သံ - အချက်အလက်အချက်အလက်တစ်ခု။

  • ob_flush () flush () flush () : buffer အကြောင်းအရာကို client ထဲသို့ပို့ရန်နှင့် browser display ကို refresh လုပ်ပါ။

  • Time_nanosleep (0, 500000000) - 0.5 စက္ကန့် (500,000,000,000) ကိုခေတ္တရပ်နားခြင်း,

  • browser နှင့် server cache ကြောင့်ဖြစ်ရတဲ့အကြောင်းအရာနောက်ကျမှုကိုရှောင်ရှားရန် http ခေါင်းစီးများကိုသင့်လျော်စွာထားပါ။

3 ။ မှတ်စုဖို့အရာ

  1. ဆာဗာ configuration သက်ရောက်မှု ဆာဗာများ (apache, apache, nginx) သည် default compution သို့မဟုတ် buffering ကိုပုံမှန်အားဖြင့်ထုတ်ယူခြင်းသို့မဟုတ်ကြားဖူးစေနိုင်သည်။ gzip compression ကိုပိတ်ထားပြီး cache ကိုမြန်အောင်လုပ်ပါ။

  2. browser အပြုအမူ <br> <br> အချို့သော browser (ဘရောက်ဆာ) သည်အချို့သောအရွယ်အစားကိုမရောက်မချင်းစစ်ဆေးနိုင်ပြီး output content သည်သေးငယ်လွန်းပါကချက်ချင်းပြသခြင်းမပြုနိုင်ပါ။ သငျသညျ trigger ကိုအစပျိုးရန် whitespace ဇာတ်ကောင်အရေအတွက်ကို output ကို output လုပ်ဖို့ကြိုးစားနိုင်ပါတယ်။

  3. Buffer အရွယ်အစား
    PHP မှ output buffer နှင့်ဝဘ်ဆာဗာကြားခံ၏အရွယ်အစားသည် output အမြန်နှုန်းကိုအကျိုးသက်ရောက်သည်။ အဆိုပါကြားခံအရွယ်အစားကိုအမှန်တကယ်အခြေအနေများအရချိန်ညှိနိုင်ပါတယ်။

  4. PHP ဗားရှင်း
    Time_Nanosleep သည်သင်၏ပတ်ဝန်းကျင်လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးနိုင်ရန် PHP 5.0.0 ဖြင့်စတင်ခြင်းကိုထောက်ပံ့သည်။

4 ။ အကျဉ်းချုပ်

Time_Nanosleep နှင့် ob_flush ကို ပေါင်းစပ်ခြင်းအားဖြင့် PHP တွင် Segment-stiet-time data output ကိုအကောင်အထည်ဖော်နိုင်ပြီး PHP တွင် PHP တွင် Tear-time data output ကိုအကောင်အထည်ဖော်နိုင်သည်။ ဤနည်းလမ်းသည်ရိုးရှင်းလွယ်ကူပြီးအသုံးပြုရန်လွယ်ကူပြီးနှောင့်နှေးမှုများသည် microseconds လိုအပ်ချက်များလိုအပ်သည့်အခြေအနေများအတွက်သင့်တော်သည်။

ကျိုးကြောင်းဆီလျော်သော server နှင့် browser settings များနှင့်ပေါင်းစပ်ပါကသင်အလွန်ချောမွေ့သောအချိန်ရလဒ်ကိုအကျိုးသက်ရောက်မှုများကိုရယူပြီးအသုံးပြုသူအတွေ့အကြုံကိုတိုးတက်စေနိုင်သည်။