လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ob_start ဖြင့် ob_end_flush ကို အသုံးပြု. သင်ခန်းစာ

ob_start ဖြင့် ob_end_flush ကို အသုံးပြု. သင်ခန်းစာ

gitbox 2025-08-11

PHP Development တွင် Ob_start () နှင့် OB_END_FLUSH () တွင်အလွန်လက်တွေ့ကျသော obfering buffering လုပ်ဆောင်ချက်များဖြစ်သည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုခြင်းအားဖြင့် developer များသည်စာမျက်နှာ output ကိုပိုမိုထိရောက်စွာစီမံခန့်ခွဲနိုင်သည်, စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန်နှင့် cache ကဲ့သို့သောအလုပ်များကိုပင်ကိုင်တွယ်နိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ငန်းဆောင်တာနှစ်ခုကိုမည်သို့အသုံးပြုကြောင်းနှင့် output buffering ယန္တရားကိုပိုမိုနားလည်ရန်မည်သို့ကူညီမည်ကိုအသေးစိတ်လေ့လာရန်ဤဆောင်းပါးသည်လေ့လာလိမ့်မည်။

1 ။ output ကိုကြားခံဘာလဲ

output buffering ယန္တရားသည် PHP scripts ၏ကွပ်မျက်မှုတွင်စာမျက်နှာပေါ်ရှိအကြောင်းအရာ output ကိုယာယီသိုလှောင်ထားသည့်အချက်ကိုရည်ညွှန်းသည်။ ပုံမှန်အားဖြင့် PHP ကို output content လိုင်းတစ်ခုစီသည် script မှလုပ်ဆောင်သောအခါ PHP ကို browser သို့ချက်ချင်းပို့လိမ့်မည်။ output buffering ကိုဖွင့်သောအခါ output ကို buffer တွင် ဦး စွာသိမ်းဆည်းထားလိမ့်မည်။

2 ။ ob_start () function ကို

ob_start () သည် output buffering စတင်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ဤ function ကိုခေါ်ဆိုပြီးနောက် ( echo , print, print , html tags စသဖြင့်) output content (ဥပမာ, ပုံနှိပ်ခြင်း, ၎င်းသည်စာမျက်နှာ output မတိုင်မီတွင်အကြောင်းအရာနှင့် compressprosing output ကိုပြုပြင်မွမ်းမံခြင်းကဲ့သို့သောလုပ်ဆောင်မှုများအတွက်ပြောင်းလွယ်ပြင်လွယ်ရှိသည်။

နမူနာကုဒ်:

 <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-comment">// output ကို buffering စတင်ပါ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, World!"</span></span><span>;  </span><span><span class="hljs-comment">// output ကိုအကြောင်းအရာများကိုမှတ်ဉာဏ်တွင်သိမ်းဆည်းထားသည်</span></span><span>
</span><span><span class="hljs-comment">// ခေါ်သည်အထိ ob_end_flush(),အကြောင်းအရာကို browser သို့ပို့လိမ့်မည်</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3 ။ ob_end_flush () function ကို

ob_end_flush () သည်လက်ရှိ output buffer ကိုပိတ်ပြီး Buffer ၏ contents ကို browser သို့ပို့ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်ဟုခေါ်သောအခါ PHP သည်ကြားခံရှိအချက်အလက်အားလုံးကို browser မှ browser သို့ထုတ်ယူပြီး buffering ယန္တရားကိုအဆုံးသတ်လိမ့်မည်။ အကယ်. သင်သည် output buffer ကိုတစ်ဝက်ခန့်ဖွင့်ပြီးပါ 0 င်သောအကြောင်းအရာများကိုထုတ်လုပ်လိုပါကဤ function ကိုသုံးနိုင်သည်။

နမူနာကုဒ်:

 <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-comment">// output ကို buffering စတင်ပါ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is buffered content."</span></span><span>;  </span><span><span class="hljs-comment">// အကြောင်းအရာ cached ဖြစ်ပါတယ်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();  </span><span><span class="hljs-comment">// buffering နှင့် output ကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4 ။ ob_end_flush နှင့် တွဲဖက်. ob_start () နှင့် ob_end_flush () ကိုသုံးပါ။

ob_start () နှင့် ob_end_flush () ပေါင်းစပ်ခြင်း () ပေါင်းစပ်မှုသည် output buffering ၏အဓိကအချက်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုနှင့် ပူးပေါင်း. developer များသည်ပိုမိုထိရောက်သောအကြောင်းအရာစီမံခန့်ခွဲမှုရရှိနိုင်သည်။ ဥပမာအားဖြင့်အချို့သောကိစ္စရပ်များအတွက် output လိုအပ်သည့်နေရာများတွင် output ကိုမှတ်ဉာဏ်တွင်သိုလှောင်ထားနိုင်ပြီးမကြာခဏ i / o စစ်ဆင်ရေးကိုရှောင်ရှားရန်နှင့်စာမျက်နှာ Loading Speed ကိုတိုးတက်စေရန်တစ်ကြိမ်တွင်လွှတ်ပေးနိုင်သည်။

cache ပါဝင်သောအကြောင်းအရာနှင့် output ကိုပြုပြင်မွမ်းမံ

Buffer ရှိအကြောင်းအရာများကိုကြားခံတွင်ပြုပြင်ရန်နှင့် OB_END_FLUSH ကို မခေါ်မီပြောင်းလဲမှုများကိုပြုလုပ်နိုင်သည်။ ဤသည်သည်အကြောင်းအရာများကိုဖြစ်ပေါ်စေပြီးရလဒ်များကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းအတွက်အလွန်အထောက်အကူပြုသည်။

နမူနာကုဒ်:

 <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-comment">// output ကို buffering စတင်ပါ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Original content"</span></span><span>;  </span><span><span class="hljs-comment">// ကန ဦး output အကြောင်းအရာ</span></span><span>
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();  </span><span><span class="hljs-comment">// buffered အကြောင်းအရာရယူပါ</span></span><span>

</span><span><span class="hljs-comment">// အကြောင်းအရာပြုပြင်မွမ်းမံမှုလုပ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</span></span><span>(</span><span><span class="hljs-string">"Original"</span></span><span>, </span><span><span class="hljs-string">"Modified"</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// ကြားခံရှင်းလင်းနှင့်ကြားခံအဆုံးသတ်</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$content</span></span><span>;  </span><span><span class="hljs-comment">// ပြုပြင်ထားသောအကြောင်းအရာ output ကို output</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5 ။ ob_start () နှင့် ob_end_flush ကိုဘယ်အချိန်မှာသုံးရမလဲ။

output buffering ကိုအကြောင်းအရာပြုပြင်ခြင်းအတွက်သာမကအခြား optimization ရည်ရွယ်ချက်များအတွက်လည်းအသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်စာမျက်နှာ output ကို compress လုပ်ခြင်း, နှောင့်နှေးဒေတာများတင်ခြင်းသို့မဟုတ်သိမ်းဆည်းထားသောအကြောင်းအရာများပေးပို့ခြင်းစသည်တို့ကိုထိန်းချုပ်ခြင်း,

5.1 နှောင့်နှေး output ကို

အကယ်. script ကိုပြီးသွားပြီးနောက်အရာအားလုံးကိုတစ်ပြိုင်နက်တည်း output လုပ်ရန်လိုအပ်ပါက script ကိုကွပ်မျက်သည်အထိ ob_start () ကို output ကိုသုံးနိုင်သည်။

 <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-comment">// ရှည်လျားသောပြေးအလုပ်များ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This will be sent after all tasks are complete."</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();  </span><span><span class="hljs-comment">// အားလုံးအလုပ်များပြီးဆုံးပြီးနောက်စည်းလုံး output ကို</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5.2 compressed output ကို

output buffering နှင့် compression နည်းပညာပေါင်းစပ်မှုသည်အချက်အလက်ထုတ်လွှင့်မှုအရွယ်အစားကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ output buffering ကိုဖွင့်ပြီးနောက် PHP ၏ OB_START () နှင့် ob_gzhandler function ကိုသုံးနိုင်သည်။

 <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-string">"ob_gzhandler"</span></span><span>);  </span><span><span class="hljs-comment">// compression enable</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"This is a compressed page!"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();  </span><span><span class="hljs-comment">// output ကို compressed အကြောင်းအရာ</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5.3 ရှုပ်ထွေးသော output များကိုကိုင်တွယ်ခြင်း

သင်အလွန်ရှုပ်ထွေးသောသို့မဟုတ် dynamically ထုတ်ပေးသောအကြောင်းအရာများကို output လုပ်ရန်လိုအပ်သည့်အခါ, ထုတ်လုပ်မှုကာလအတွင်း browser မှ output မှ output များသို့ထုတ်လွှင့်ခြင်းမှရှောင်ရှားရန် output buffer ကိုသုံးနိုင်သည်။

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

ob_start () နှင့် ob_end_flush () သည် PHP output buffering ယန္တရားတွင်အလွန်အရေးကြီးသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ၎င်းတို့သည် Page output ကိုပိုမိုထိရောက်စွာစီမံခန့်ခွဲနိုင်, စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်နှင့်မလိုအပ်သော I / O စစ်ဆင်ရေးကိုလျှော့ချနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သောပူးပေါင်းဆောင်ရွက်မှုများမှတဆင့် 0 က်ဘ်ဆိုက်၏တုန့်ပြန်မှုမြန်နှုန်းနှင့်အသုံးပြုသူအတွေ့အကြုံများကိုတိုးတက်စေရန်အကြောင်းအရာပြုပြင်ခြင်း, စာမျက်နှာချုံ့ခြင်း, ဖွံ့ဖြိုးရေးလုပ်ငန်းစဉ်အတွင်းဤလုပ်ဆောင်မှုနှစ်ခုကိုအသုံးပြုခြင်းသည်ကြီးမားသောရလဒ်များကိုကိုင်တွယ်ရာတွင်သင့်ကိုပိုမိုသက်သာစေနိုင်သည်။