[ob_start နှင့် ob_clean နှင့်သူတို့၏အဓိကကွဲပြားခြားနားမှုများအပေါ်အဘယျသို့အသုံးဝင်သောအသုံးပြုမှုကဘာလဲ? ]
PHP တွင် OB_Start နှင့် OB_ST_CLEAN သည်အလွန်အသုံးဝင်သော obfer operation လုပ်ငန်း၏လုပ်ဆောင်ချက်များဖြစ်သည်။ ၎င်းတို့သည်မကြာခဏဆိုသလို difficult output ကို browser သို့တိုက်ရိုက်ရှောင်ရှားရန်အသုံးပြုသည်။ ၎င်းသည်စွမ်းဆောင်ရည်အကောင်းဆုံး, အကြောင်းအရာပြုပြင်ခြင်း, အကြောင်းအရာပြုပြင်ခြင်း,
PHP ၏ output buffering ယန္တရားသည် browser သို့တိုက်ရိုက်ပို့မည့်အစား Memory ရှိ Browser သို့ Buffer ရှိ Buffer တွင် script output output များကိုစိတ်တဇထုတ်ယူမှုများသိုလှောင်ရန်ခွင့်ပြုသည်။ output buffering ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်စာမျက်နှာမှ output ကိုမပို့မီပိုမိုကောင်းမွန်သောထိန်းချုပ်မှုကိုလုပ်ဆောင်နိုင်သည်။ ၎င်းသည်အချို့သောအခြေအနေများအတွက် output ကိုကိုင်တွယ်ရန်သို့မဟုတ်ပြုပြင်မွမ်းမံရန်လိုအပ်သည့်နေရာများအတွက်အလွန်အသုံးဝင်သည်။
ob_start function ကို output buffer စတင်ရန်အသုံးပြုသည်။ ob_start () ဟုခေါ်သောအခါ PHP သည် browser သို့တိုက်ရိုက်ပို့မည့်အစား PHP သည် cache output ကိုစတင်သည်။
သဒ္ဒါ:
<span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span></span>Ob_start ကိုခေါ်ပြီးနောက် () ကို browser တွင်ချက်ချင်းပြသမည့်အစား output content အားလုံးကို internal buffer တွင်သိမ်းထားလိမ့်မည်။ ဤအချိန်တွင်သိုလှောင်ထားသောအကြောင်းအရာများကိုပြုပြင်ခြင်းသို့မဟုတ်ဖိုင်များသို့မဟုတ်ဒေတာဘေ့စ်သို့သိမ်းဆည်းထားသောအကြောင်းအရာများကိုပေးပို့ခြင်းကဲ့သို့သောပြုပြင်ထုတ်လုပ်မှုအချို့ပြုလုပ်နိုင်သည်။
ဥပမာ -
<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-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">// လက်ရှိကြားခံ၏ contents ရယူပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// ကြားခံရှင်းထုတ်ပြီး output buffer ကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The buffered content: "</span></span><span> . </span><span><span class="hljs-variable">$content</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း "The buffered content: Hello, world!"</span></span><span>
</span></span>အထက်ပါဥပမာတွင် Ob_start () သည် ကြားခံကိုစတင်သည်။ ECHO မှတစ်ဆင့်အကြောင်းအရာအားလုံးမှာယာယီယာယီယာယီယာယီစွဲကိုင်ထားသည်။ ထို့နောက် ob_get_contontents () function သည် buffer ရှိ contents များကိုရရှိပြီး ob_clean () ကို ခေါ်ပြီးနောက်ကြားခံကိုသန့်ရှင်းစေသည်။
Ob_end_clean သည်လက်ရှိ output buffer ကိုပိတ်ပြီးကြားခံရှိအကြောင်းအရာများကိုရှင်းလင်းရန်အသုံးပြုသည်။ ဆိုလိုသည်မှာ၎င်းသည် browser ထဲသို့မပို့မည့်အစားလက်ရှိကြားခံတွင် output တွင် output ကိုဖယ်ရှားပစ်သည်။
သဒ္ဒါ:
<span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
</span></span>ဒီ function ကိုများသောအားဖြင့် buffer ရဲ့ contents ရဲ့ contents ရဲ့ contents တွေကိုဖြေရှင်းပြီးနောက်ကြားခံသန့်ရှင်းရေးလုပ်ဖို့ ob_start () ကိုသုံးလေ့ရှိတယ်။
ဥပမာ -
<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."</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း不会立即显示</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-comment">// ထုတ်လုပ်ခြင်း什么都不会显示,ဘာဖြစ်လို့လဲဆိုတော့ကြားခံရဲ့ contents ရှင်းလင်းခဲ့ကြလို့ပဲ</span></span><span>
</span></span>ob_start ကို output buffer ကိုစတင်ရန်နှင့်ယာယီကြားခံတွင်ယာယီသိမ်းဆည်းရန်အသုံးပြုသည်။
OB_END_CLEAN သည်လက်ရှိ output buffer ကိုပိတ်ပြီး browser ကိုဘာမှမလွယ်ကူပါကရှင်းလင်းသော output buffer ကိုပိတ်ပစ်ရန်အသုံးပြုသည်။
ဤလုပ်ဆောင်ချက်နှစ်ခုပေါင်းစပ်မှုကသင့်အားစာမျက်နှာများ 0 င်ရောက်သောအခါသို့မဟုတ်နေရာချိန်တွင်ပြုလုပ်သောထုတ်လုပ်မှုကိုပြုပြင်ခြင်းမပြုဘဲပြုပြင်ပြောင်းလဲမှုဆိုင်ရာအချက်အလက်များကိုပြုပြင်ရန်ခွင့်ပြုသည်။
HTTP header သတင်းအချက်အလက်များကိုမပို့မီ output ကိုပြုပြင်မွမ်းမံပါ output buffering ကို PHP ၏ "ခေါင်းစီးများကိုပို့ပြီးပြီ" အမှားများကိုမှားယွင်းစွာထုတ်ဖော်ပြောဆိုရန် - HTTP ခေါင်းများကိုရှင်းလင်းသော Buffer ၏ contents များကိုရှင်းလင်းပြီးပို့ပြီးမှသာပေးပို့နိုင်သည်။ အကယ်. သင်သည် script ကိုမစတင်မီ Custom HTTP ခေါင်းစီးများကိုသင်ပို့ရန်လိုအပ်ပါက ob_start () ကို သုံးနိုင်သည်။
<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-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: http://example.com"</span></span><span>); </span><span><span class="hljs-comment">// header သတင်းအချက်အလက်ကိုပြုပြင်မွမ်းမံ</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>Cache စာမျက်နှာအကြောင်းအရာ <br> အချို့သောစွမ်းဆောင်ရည် optimization အခြေအနေများတွင် cache page ၏ output သည်နောက်ဆက်တွဲတောင်းဆိုမှုများ၏တုန့်ပြန်မှုအချိန်ကိုများစွာလျော့နည်းစေသည်။ ဥပမာအားဖြင့်, output buffer အကြောင်းအရာကို database query query operations များကိုရှောင်ရှားရန်ဖိုင်တွင်သိမ်းဆည်းထားနိုင်သည်။
<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">include</span></span><span>(</span><span><span class="hljs-string">"content.php"</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__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// cached အကြောင်းအရာကိုရယူပါ</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-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">"cached_page.html"</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>); </span><span><span class="hljs-comment">// carded contents တွေကိုဖိုင်များသို့သိမ်းထားပါ</span></span><span>
</span></span>ပါဝင်မှုပြုပြင်ခြင်းသို့မဟုတ် redirection <br> <br> အကယ်. သင်သည်ထုတ်လုပ်ထားသော HTML အကြောင်းအရာများကိုပြုပြင်ရန်သို့မဟုတ်၎င်းကို redirect လုပ်ရန်လိုအပ်ပါက output buffer သည်အလွန်အဆင်ပြေသည်။ ဥပမာအားဖြင့်, သင်သည် buffer contents များကို ob_get_contents () မှတစ်ဆင့်ရနိုင်သည်။
<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">"Hello, this is the original content!"</span></span><span>;
</span><span><span class="hljs-variable">$buffer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>(); </span><span><span class="hljs-comment">// Buffer အကြောင်းအရာကိုရယူပါ</span></span><span>
</span><span><span class="hljs-comment">// အကြောင်းအရာပြုပြင်မွမ်းမံ</span></span><span>
</span><span><span class="hljs-variable">$modified_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">$buffer</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">$modified_content</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း修改后的内容</span></span><span>
</span></span>ob_start နှင့် ob_clean သည် PHP ရှိ PHP ရှိ Output output buffering tools များဖြစ်ပြီး developer များ output ကိုမပို့မီ developer များပြုပြင်ခြင်း, ဒီနှစ်ခုကိုသင့်လျော်စွာအသုံးပြုခြင်းအားဖြင့် HTTP header အမှားအယွင်းများ, စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်သောအခါ http header အမှားများကဲ့သို့သောဘုံခေါင်း၏အမှားအယွင်းများ,