လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင်အသိုက် ob_start output output output buffers များကိုမည်သို့စီမံရမည်နည်း။ လက်တွေ့ကျတဲ့ကျွမ်းကျင်မှုများကိုမျှဝေပါ

PHP တွင်အသိုက် ob_start output output output buffers များကိုမည်သို့စီမံရမည်နည်း။ လက်တွေ့ကျတဲ့ကျွမ်းကျင်မှုများကိုမျှဝေပါ

M66 2025-08-04

1 ။ အခြေခံအယူအဆ - output buffer ဆိုတာဘာလဲ။

PHP တွင် output buffer (output buffer) သည် output content ကို cache cache ကို cache cache cache ယန္တရားတစ်ခုဖြစ်သည်။ output buffer ကိုဖွင့်ခြင်းအားဖြင့် HTML အကြောင်းအရာသို့မဟုတ်အခြားအချက်အလက်များကိုစတင်ရန်မည်သည့်အချိန်တွင်သင်ထိန်းချုပ်နိုင်ပြီး browser ကိုချက်ချင်းပေးပို့ခြင်းကိုရှောင်ရှားရန်သင်ထိန်းချုပ်နိုင်သည်။ ဤသည် output ကိုနှောင့်နှေးခြင်း, ပြုပြင်မွမ်းမံခြင်းသို့မဟုတ်အပြန်အလှန်ဆက်သွယ်ရန်လိုအပ်သည့်ဖြစ်ရပ်များကိုကိုင်တွယ်ရာတွင်အသုံးဝင်သည်။

ob_start နှင့် output buffer ကိုစတင်ပြီးနောက် PHP သည် Memory ရှိ output compute အားလုံးကိုသိုလှောင်ထားပြီး browser ကိုချက်ချင်းမပို့ပါ။ လိုအပ်သည့်အခါ developer များသည် carded ပါဝင်သည့်အကြောင်းအရာများကိုရရှိရန် Ob_get_contontents () ကို browser သို့ပို့ရန်သို့မဟုတ် browser မှ browser သို့ပို့နိုင်သည်

2 ။ အဘယ်ကြောင့်အသိုက်ကြားခံလိုအပ်သနည်း

ရှုပ်ထွေးသော application တစ်ခုတွင်အချို့သောကြားခံတစ်ခုအတွင်းအခြားကြားခံတစ်ခုစတင်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့်အသိုက်လုပ်ထားသော output buffer များကိုအသုံးပြုခြင်းသည်တင်းပလိတ်ပေါင်းများစွာဖြင့်အလုပ်လုပ်သောအခါပြောင်းလဲခြင်း, ဤတွင်အများသုံးအသိုက် buffer အသုံးပြုမှုအခြေအနေများမှာ -

  • Template English - Template အင်ဂျင်သည်များသောအားဖြင့် buffer တွင် template output ကိုဖမ်းယူနိုင်ပြီးဤအကြောင်းအရာများကိုပြင်ပတွင်ထပ်မံလုပ်ဆောင်သည်။

  • အကြောင်းအရာပြုပြင်ခြင်း - တခါတရံတွင်အကြောင်းအရာအချို့ကိုအချို့သော output arearment ကိုရှာဖွေရန်သို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာရန်လိုအပ်သည်။

  • output ကိုစီးဆင်းမှုကိုလျှော့ချခြင်း - အသိုက်ကြားခံများဖြင့်အဓိက output စီးဆင်းမှုကိုမထိခိုက်စေဘဲဖိုင် (သို့) ဒေတာဘေ့စ်တစ်ခုသို့အချို့သောအကြောင်းအရာများကိုသင်ခန်းစာယူနိုင်သည်။

3 ။ အသိုက် output buffers စီမံခန့်ခွဲ

အသိုက်လုပ်ထားသော output buffers မျိုးစုံကိုစီမံခြင်းသည်ကြားခံတစ်ခုတည်းကိုစီမံခြင်းကဲ့သို့မလွယ်ကူပါ။ ပုံမှန်အားဖြင့် PHP သည်နောက်ဆုံးစတင်ခဲ့သည့်ကြားခံကိုပထမ ဦး ဆုံးအဆုံးသတ်ရန်သာထောက်ပံ့သည်။ ဤကြားခံများကိုထိရောက်စွာစီမံရန်အောက်ပါနည်းလမ်းများကိုရယူနိုင်ပါသည်။

3.1 အမည်ရှိ buffers ကိုအသုံးပြုခြင်း

PHP 5.4, ob_start () အပြီးတွင် Naming Buffers ကိုထောက်ခံသည်။ အသိုက်ကြားခံစုံကြားရှိပေါင်းသင်းမှုများအကြားရှုပ်ထွေးမှုများကို output buffer တစ်ခုစီအတွက်အခြားနာမည်တစ်ခုသတ်မှတ်ခြင်းဖြင့်ရှုပ်ထွေးမှုများကိုရှောင်ရှားနိုင်သည်။ အမည်ရှိကြားခံကိုအသုံးပြုသောအခါတိုင်းကြားခံကိုအဆုံးသတ်သည့်အခါတိုင်းအခြားကြားခံမဟုတ်ဘဲလက်ရှိကြားခံကိုသာအကျိုးသက်ရောက်သည်။

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(</span><span><span class="hljs-string">"output_handler"</span></span><span>, </span><span><span class="hljs-number">4096</span></span><span>, PHP_OUTPUT_HANDLER_CLEANABLE);
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(</span><span><span class="hljs-string">"another_handler"</span></span><span>, </span><span><span class="hljs-number">4096</span></span><span>, PHP_OUTPUT_HANDLER_CLEANABLE);
</span></span>

အထက်ပါဥပမာတွင် outputler နှင့် အခြား adutputler သည်လွတ်လပ်သော output buffers နှစ်ခုဖြစ်ပြီး၎င်းတို့၏ရလဒ်များသည်တစ် ဦး နှင့်တစ် ဦး 0 င်ရောက်စွက်ဖက်လိမ့်မည်မဟုတ်ပါ။

3.2 အသိုက် buffers ၏ output ကိုအဆင့်ဆင့်စီမံခန့်ခွဲမှု

တစ်ခါတစ်ရံတွင်သင်သည်ပြင်ပကြားခံကိုမထိခိုက်စေဘဲအသိုက် buffer ၏အဆုံးတွင်ပါ 0 င်မှုများကိုရယူရန်လိုအပ်နိုင်သည်။ ၎င်းကိုကြားခံအဆင့်ကိုထိန်းချုပ်ခြင်းဖြင့်အောင်မြင်နိုင်သည်။

 <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">"ဤသည်ပြင်ပကြားခံ၏အကြောင်းအရာဖြစ်ပါတယ်\n"</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">"ဤသည်အတွင်းပိုင်းကြားခံ၏အကြောင်းအရာဖြစ်ပါတယ်\n"</span></span><span>;
    </span><span><span class="hljs-variable">$nestedContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</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-string">"ပြည်တွင်းရေးကြားခံ၏ contents:<span class="hljs-subst">$nestedContent</span></span></span><span>\n";
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();  </span><span><span class="hljs-comment">// အပြင်ဘက်ကြားခံအဆုံးသတ်</span></span><span>
</span></span>

Ob_get_contents () မှအတွင်းပိုင်းကြားခံ၏ contents ၏ contents ကိုယူပြီး Ob_end_clean () ကိုဖွင့်ပါ။ ၎င်းတို့သည်ပြင်ပကြားခံတွင်အသုံးပြုနိုင်သည်။

3.3 သင့်လျော်သော Buffer Callback ကိုချိန်ညှိခြင်း

တစ်ခါတစ်ရံတွင် developer များကရှင်းလင်းပြတ်သားစွာမပြုမီကြားခံအကြောင်းအရာကိုပြုပြင်လိုကြသည်။ ယခုအချိန်တွင်ကျွန်ုပ်တို့သည် output content ကိုလုပ်ဆောင်ရန် callback function ကိုသတ်မှတ်နိုင်သည်။ ob_start () သည် callback function ကို parameter တစ်ခုအဖြစ်လက်ခံနိုင်ပြီး Buffer အကြောင်းအရာကိုထုတ်ပြန်သည့်အခါ function ကိုအလိုအလျောက်လုပ်ဆောင်နိုင်သည်။

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">modify_output</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$buffer</span></span></span><span>) {
    </span><span><span class="hljs-comment">// output အကြောင်းအရာကိုပြုပြင်မွမ်းမံပါ</span></span><span>
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">str_replace</span></span><span>(</span><span><span class="hljs-string">"PHP"</span></span><span>, </span><span><span class="hljs-string">"PHP 7"</span></span><span>, </span><span><span class="hljs-variable">$buffer</span></span><span>);
}

</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(</span><span><span class="hljs-string">"modify_output"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Welcome to PHP!"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();  </span><span><span class="hljs-comment">// ပထမ ဦး ဆုံး execute လိမ့်မယ် modify_output,ထိုအခါပြုပြင်ထားသောအကြောင်းအရာ output ကို output</span></span><span>
</span></span>

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

4 ။ Buffer ဘယ်တော့လဲ

အသိုက်ထားရှိသောကြားခံမျိုးစုံကိုစီမံသည့်အခါဘုံမေးခွန်းတစ်ခုသည်ကြားခံတစ်ခုအဆုံးသတ်ရန်မည်သည့်အချိန်တွင်ကျိုးကြောင်းဆီလျော်စွာရွေးချယ်ရမည်နည်း။ ပုံမှန်အားဖြင့်ကြားခံတစ်ခုအဆုံးသတ်ရန်အချိန်ကိုက်ခြင်းသည် output ၏အဆင့်ဆင့်နှင့်ဆက်စပ်သင့်သည်။ ကျွန်ုပ်တို့သည် OB_END_FLUSH () သို့မဟုတ် ob_lean () ကိုသုံးနိုင်သည်။ သို့မဟုတ်နောက်ဆက်တွဲအသုံးပြုမှုအတွက်သူတို့ကိုစောင့်ရှောက်ရန်,

  • ob_end_flush () : လက်ရှိကြားခံနှင့်အကြောင်းအရာကို browser ကိုအဆုံးသတ်ပါ။

  • ob_clean () - လက်ရှိကြားခံကိုအဆုံးသတ်ပါ, သို့သော်မည်သည့်အရာကိုမဆိုထုတ်လုပ်ရန်မပါ,

ဤနှစ်ခုကိုရွေးချယ်ခြင်းသည်ကျိုးကြောင်းဆီလျော်စွာရွေးချယ်ခြင်းသည် output content ကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်မှုရှိသည်ဟုသေချာစေသည်။

5 ။ အမှားနှင့် Debug output ကို

PHP applications များကို debing လုပ်သည့်အခါ output buffer စီမံခန့်ခွဲမှုတွင်ရှုပ်ထွေးမှုများကိုသင်ကြုံတွေ့ရနိုင်သည်။ အထူးသဖြင့်ကြားခံသည်အလွန်နက်နက်ရှိုင်းရှိုင်းအသိုက်ထားရှိသည့်အခါ Debug အချက်အလက်များ၏ရလဒ်အနေဖြင့်မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါ။ ပိုမိုကောင်းမွန်သော output buffers များကိုပိုမိုကောင်းမွန်စွာစီမံရန် Ob_get_level () ကို သုံးနိုင်သည်။

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"လက်ရှိကြားခံ၏အတိမ်အနက်ကို: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">ob_get_level</span></span><span>();
</span></span>

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