လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP Real-Time Data output ကို optimize လုပ်ရန် Ob_flush ကိုသုံးပါ

PHP Real-Time Data output ကို optimize လုပ်ရန် Ob_flush ကိုသုံးပါ

gitbox 2025-09-01

PHP application များတီထွင်သည့်အခါတိုက်ရိုက်ထုတ်လွှင့်ခြင်း, တိုက်ရိုက်ထုတ်လွှစကားပြောခန်းသို့မဟုတ်တက်ကြွသောအချက်အလက်များသို့မဟုတ်ပြောင်းလဲနေသောအချက်အလက်အသစ်များကဲ့သို့သောအချိန်နှင့်တပြေးညီအချက်အလက်များစီးဆင်းမှုပါ 0 င်သည့်အခြေအနေများတွင်အထူးသဖြင့်ရှုထောင့်များကိုတီထွင်သည့်အခါ, ပုံမှန်အားဖြင့် PHP သည်ဒေတာအားလုံးကိုနှေးကွေးစေသည့်အချက်အလက်အားလုံးကိုဖွင့်ရန်နှေးကွေးလာပြီး, ၎င်းကိုပိုမိုကောင်းမွန်စေရန်အတွက် OB_FLUSH function ကို အသုံးပြု. လက်ငင်းထုတ်ပေးရန်, latency ကိုလျှော့ချရန်နှင့်ဝဘ်စာမျက်နှာ၏ချောချောမွေ့မွေ့တိုးတက်စေရန်အတွက် ob_flush function ကိုသုံးနိုင်သည်။

ob_flush ဆိုတာဘာလဲ။

ob_flush () PHP ၏ output buffer control function ကိုဖြစ်ပါတယ်။ ၎င်းသည် output buffer ၏ contents များကို flush လုပ်ရန်နှင့် script ကိုမပို့မီစောင့်ဆိုင်းခြင်းမပြုမှီစောင့်ဆိုင်းမည့်အစား browser မှအချက်အလက်များကို browser ရှိဒေတာများကို flush လုပ်ရန်အသုံးပြုသည်။ များသောအားဖြင့် PHP သည် output တွင် output တွင် output တွင် default mode တွင်သိမ်းဆည်းထားပြီး script ကိုကွပ်မျက်ခံရပြီးနောက် browser သို့ပို့လိမ့်မည်။ ဤယန္တရားသည်စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်, သို့သော်အချို့သောအခြေအနေများတွင်အချိန်မှန် output လိုအပ်သည့်နေရာများတွင်မလိုအပ်သောနှောင့်နှေးမှုများပြုလုပ်နိုင်သည်။

ob_flush () browser ရှိအချက်အလက်များကို browser သို့ပို့သည့်အချက်အလက်များကို browser သို့ပို့သည့်အခါသင်ကိုယ်တိုင်ထိန်းချုပ်နိုင်သည်။

ob_flush ကိုဘယ်လိုသုံးရမလဲ။

ob_flush ကို သုံးနိုင်ရန်အတွက်သင်သည် output buffering ကိုဖွင့်ထားကြောင်း ဦး စွာ ဦး စွာပြုလုပ်ရန်လိုအပ်သည်။ output buffer ကို ob_start () နှင့် စတင်. ob_flush မှတဆင့်အချိန်မှန်နှင့်အတူ output ကိုစတင်နိုင်သည်။ ပုံမှန်ဖြစ်စဉ်ကိုအောက်ပါအတိုင်းဖြစ်သည် -

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// output ကို buffering စတင်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();

</span><span><span class="hljs-comment">// analog data output ကို,များသောအားဖြင့်ဤသည်ရှည်လျားသောပြေးအလုပ်ဖြစ်ပါတယ်</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဒေတာကိုတင်...&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>(); </span><span><span class="hljs-comment">// အချက်အလက်များကို browser သို့ချက်ချင်းပို့ပါ</span></span><span>

</span><span><span class="hljs-comment">// သင့်မှာကိုင်တွယ်ရန်အဆင့်များစွာရှိသည်ဆိုပါစို့</span></span><span>
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Simulation စောင့်ဆိုင်း</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"တိုးတက်လာသောတိုးတက်မှု: 50%&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>(); </span><span><span class="hljs-comment">// အချက်အလက်များကို browser သို့ချက်ချင်းပို့ပါ</span></span><span>

</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Simulation စောင့်ဆိုင်း</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Loading ပြည့်စုံသည်!&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>(); </span><span><span class="hljs-comment">// နောက်ဆုံးခြေလှမ်း,ဒေတာကို browser သို့ပို့ပါ</span></span><span>

</span><span><span class="hljs-comment">// output ထုတ် buffering ပိတ်ထား</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

အထက်ပါကုဒ်တွင် ob_start () ob_start () output buffering ယန္တရားစတင်သည်။ Ob_flush () ကိုခေါ်သည့်အခါတိုင်းကြားခံရှိအချက်အလက်များကို browser သို့ချက်ချင်းပို့လိမ့်မည်။ အိပ်စက်ခြင်း () function ကိုတင်စဉ်အတွင်းနှောင့်နှေးတာကို Simulates ။ ဤနည်းအားဖြင့်ဘရောင်ဇာသည်ရလဒ်များကိုမပြမီ script ကိုမစောင့်မချင်းစောင့်ဆိုင်းခြင်းမပြုဘဲဘရောင်ဇာသည်တကယ့်ကိုအချိန်နှင့်တပြေးညီမစောင့်ပါ။

ob_flush ၏လက်တွေ့ကျသော application ဇာတ်လမ်း

1 ။ အချိန်မှန်ဒေတာစောင့်ကြည့်ရေး

ဥပမာအားဖြင့်, စောင့်ကြည့်လေ့လာရေးစနစ်တွင်အချို့သောသော့ (ဥပမာ CPU အသုံးပြုမှု, မှတ်ဉာဏ်အသုံးပြုမှုစသည်) အချို့ကိုအချိန်မှန်တွင်ပြသနိုင်ရန်လိုအပ်နိုင်သည်။ OB_FLUSH () နှင့်အတူဤဒေတာများကို lag သို့မဟုတ် lag မပါဘဲ update လုပ်သည့်အခါအသုံးပြုသူကိုချက်ချင်းတင်ပြရန်သင်သေချာပေါက်နိုင်ပါတယ်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"System Real-Time Data ကိုစောင့်ကြည့်ပါ&lt;br&gt;"</span></span><span>;

</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt; </span><span><span class="hljs-number">100</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"လက်ရှိဒေတာ:<span class="hljs-subst">{$i}</span></span></span><span>%&lt;br&gt;";
    </span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">flush</span></span><span>(); </span><span><span class="hljs-comment">// ဒေတာကို browser ကိုထပ်မံပို့ပါ</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
}

</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

2 ။ တိုက်ရိုက်စကားပြောစနစ်

တိုက်ရိုက်ချက်တင်စကားဝိုင်းတွင်အသုံးပြုသူမက်ဆေ့ခ်ျကိုအခြားအသုံးပြုသူများကိုချက်ချင်းပြသရန်လိုအပ်သည်။ ob_flush () ကို အသုံးပြုခြင်းအားဖြင့်သတင်းအချက်အလက်ထုတ်လွှင့်မှု၏အချိန်ဇယားကိုသေချာစေရန်မက်ဆေ့ခ်ျပို့ပြီးနောက် browser display ကိုချက်ချင်းလန်းဆန်းစေနိုင်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-literal">true</span></span><span>) {
    </span><span><span class="hljs-variable">$message</span></span><span> = </span><span><span class="hljs-string">"သတင်းအသစ်:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>); </span><span><span class="hljs-comment">// Real-time message ကိုတုပ</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$message</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">flush</span></span><span>();
    </span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// Simulated မက်ဆေ့ခ်ျကို update ကိုကြိမ်နှုန်း</span></span><span>
}
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3 ။ တိုက်ရိုက် streaming

တိုက်ရိုက်ထုတ်လွှင့်မှုလျှောက်လွှာများ, ဗီဒီယိုဘောင်များနှင့်အချိန်နှင့်တပြေးညီဒေတာ (ဥပမာကြည့်ရှုသူအရေအတွက်ကဲ့သို့သောအချက်အလက်များ) တွင်အချိန်မီမွမ်းမံရန်လိုအပ်သည်။ ob_flush မှတဆင့် () အား browser သည် data submiting အားလုံးကိုမစောင့်နိုင်သော်လည်းအသုံးပြုသူအတွေ့အကြုံတိုးတက်စေရန် browser သည် browser ကိုမစောင့်နိုင်ကြောင်းသေချာစွာစစ်ဆေးနိုင်သည်။

ob_flush ကိုအသုံးပြုသောအခါမှတ်စုများ

Ob_Flush () သည် ဝက်ဘ်စာမျက်နှာများ၏အချိန်နှင့်တပြေးညီထုတ်လုပ်မှုစွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သော်လည်းစိတ်ထဲထားရန်လိုအပ်သည့်မှတ်စုများရှိသည်။

  1. Browser Cacheing : ဘရောက်ဇာသည်အကြောင်းအရာများကို cache cache လုပ်နိုင်သည်။ အကြောင်းအရာအချို့ကိုချက်ချင်းပြသခြင်းမပြုရ။ cache ကို flush () နှင့် ob_flush () မှတဆင့်လန်းဆန်းစေရန်အတင်းအကျပ်ခိုင်းစေနိုင်သည်။

  2. စွမ်းဆောင်ရည်သက်ရောက်မှု - မကြာခဏလန်းဆန်းမှုသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများစွာရှိသည့်အခါဆာဗာတွင် 0 န်ထုပ်ဝန်ပိုးကိုထည့်သွင်းနိုင်သည်။ ဒါဟာအမှန်တကယ်ဇာတ်လမ်းအရကျိုးကြောင်းဆီလျော်စွာအသုံးပြုရန်လိုအပ်ပါသည်။

  3. လိုက်ဖက်တဲ့ပြ issues နာများ - 0 က်ဘ်ဆာဗာများနှင့် browser (ဘရောက်ဆာ) အားလုံးသည်ချက်ချင်းပင်လန်းဆန်းမှုကိုထောက်ပံ့သည်မဟုတ်။ လိုက်လျောညီထွေသေချာစေရန်စမ်းသပ်ရန်လိုအပ်သည်။

  4. client cache - အချို့သော browser များက output content ကို cache လုပ်ထားဆဲဖြစ်နိုင်သည်။ ဤအချိန်တွင်သင်သည် cache control ကဲ့သို့သောသင့်လျော်သော http ခေါင်းစီးများကိုအသုံးပြုရန်လိုအပ်သည်။ cache ကို disable လုပ်ရန် cache

အကျဉ်းချုပ်

ob_flush () နှင့် output buffering ယန္တရားမှတဆင့် PHP ၏အချိန်နှင့်တပြေးညီဒေတာ output ကို optimize လုပ်ပြီး 0 က်ဘ်စာမျက်နှာများကို 0 က်ဘ်စာမျက်နှာများကိုပိုမိုချောမွေ့စေနိုင်သည်။ အချိန်နှင့်တပြေးညီဒေတာစောင့်ကြည့်လေ့လာခြင်း, chat systems သို့မဟုတ်တိုက်ရိုက်ထုတ်လွှင့်စနစ်များသို့မဟုတ်တိုက်ရိုက်ထုတ်လွှင့ ်လွှာ များပြုလုပ်နိုင်ခြင်း, သို့သော်၎င်းအားအသုံးပြုသောအခါ, ဆာဗာစွမ်းဆောင်ရည်နှင့် browser သွယ်ဝိုက်မှုကိုမကြာခဏလန်းဆန်းစေသည့်သယံဇာတများစွန့်ပစ်ပစ္စည်းသို့မဟုတ်စွမ်းဆောင်ရည်ပြ problems နာများကိုရှောင်ရှားရန်စဉ်းစားသင့်သည်။