PHP Development တွင် Ob_start () နှင့် OB_END_FLUSH () တွင်အလွန်လက်တွေ့ကျသော obfering buffering လုပ်ဆောင်ချက်များဖြစ်သည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုခြင်းအားဖြင့် developer များသည်စာမျက်နှာ output ကိုပိုမိုထိရောက်စွာစီမံခန့်ခွဲနိုင်သည်, စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန်နှင့် cache ကဲ့သို့သောအလုပ်များကိုပင်ကိုင်တွယ်နိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ငန်းဆောင်တာနှစ်ခုကိုမည်သို့အသုံးပြုကြောင်းနှင့် output buffering ယန္တရားကိုပိုမိုနားလည်ရန်မည်သို့ကူညီမည်ကိုအသေးစိတ်လေ့လာရန်ဤဆောင်းပါးသည်လေ့လာလိမ့်မည်။
output buffering ယန္တရားသည် PHP scripts ၏ကွပ်မျက်မှုတွင်စာမျက်နှာပေါ်ရှိအကြောင်းအရာ output ကိုယာယီသိုလှောင်ထားသည့်အချက်ကိုရည်ညွှန်းသည်။ ပုံမှန်အားဖြင့် PHP ကို output content လိုင်းတစ်ခုစီသည် script မှလုပ်ဆောင်သောအခါ PHP ကို browser သို့ချက်ချင်းပို့လိမ့်မည်။ output buffering ကိုဖွင့်သောအခါ output ကို buffer တွင် ဦး စွာသိမ်းဆည်းထားလိမ့်မည်။
ob_start () သည် output buffering စတင်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ဤ function ကိုခေါ်ဆိုပြီးနောက် ( echo , print, print , html tags စသဖြင့်) output content (ဥပမာ, ပုံနှိပ်ခြင်း, ၎င်းသည်စာမျက်နှာ output မတိုင်မီတွင်အကြောင်းအရာနှင့် compressprosing output ကိုပြုပြင်မွမ်းမံခြင်းကဲ့သို့သောလုပ်ဆောင်မှုများအတွက်ပြောင်းလွယ်ပြင်လွယ်ရှိသည်။
နမူနာကုဒ်:
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
ob_end_flush () သည်လက်ရှိ output buffer ကိုပိတ်ပြီး Buffer ၏ contents ကို browser သို့ပို့ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်ဟုခေါ်သောအခါ PHP သည်ကြားခံရှိအချက်အလက်အားလုံးကို browser မှ browser သို့ထုတ်ယူပြီး buffering ယန္တရားကိုအဆုံးသတ်လိမ့်မည်။ အကယ်. သင်သည် output buffer ကိုတစ်ဝက်ခန့်ဖွင့်ပြီးပါ 0 င်သောအကြောင်းအရာများကိုထုတ်လုပ်လိုပါကဤ function ကိုသုံးနိုင်သည်။
နမူနာကုဒ်:
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
ob_start () နှင့် ob_end_flush () ပေါင်းစပ်ခြင်း () ပေါင်းစပ်မှုသည် output buffering ၏အဓိကအချက်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုနှင့် ပူးပေါင်း. developer များသည်ပိုမိုထိရောက်သောအကြောင်းအရာစီမံခန့်ခွဲမှုရရှိနိုင်သည်။ ဥပမာအားဖြင့်အချို့သောကိစ္စရပ်များအတွက် output လိုအပ်သည့်နေရာများတွင် output ကိုမှတ်ဉာဏ်တွင်သိုလှောင်ထားနိုင်ပြီးမကြာခဏ i / o စစ်ဆင်ရေးကိုရှောင်ရှားရန်နှင့်စာမျက်နှာ Loading Speed ကိုတိုးတက်စေရန်တစ်ကြိမ်တွင်လွှတ်ပေးနိုင်သည်။
Buffer ရှိအကြောင်းအရာများကိုကြားခံတွင်ပြုပြင်ရန်နှင့် OB_END_FLUSH ကို မခေါ်မီပြောင်းလဲမှုများကိုပြုလုပ်နိုင်သည်။ ဤသည်သည်အကြောင်းအရာများကိုဖြစ်ပေါ်စေပြီးရလဒ်များကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းအတွက်အလွန်အထောက်အကူပြုသည်။
နမူနာကုဒ်:
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
output buffering ကိုအကြောင်းအရာပြုပြင်ခြင်းအတွက်သာမကအခြား optimization ရည်ရွယ်ချက်များအတွက်လည်းအသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်စာမျက်နှာ output ကို compress လုပ်ခြင်း, နှောင့်နှေးဒေတာများတင်ခြင်းသို့မဟုတ်သိမ်းဆည်းထားသောအကြောင်းအရာများပေးပို့ခြင်းစသည်တို့ကိုထိန်းချုပ်ခြင်း,
အကယ်. script ကိုပြီးသွားပြီးနောက်အရာအားလုံးကိုတစ်ပြိုင်နက်တည်း output လုပ်ရန်လိုအပ်ပါက script ကိုကွပ်မျက်သည်အထိ ob_start () ကို output ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
output buffering နှင့် compression နည်းပညာပေါင်းစပ်မှုသည်အချက်အလက်ထုတ်လွှင့်မှုအရွယ်အစားကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ output buffering ကိုဖွင့်ပြီးနောက် PHP ၏ OB_START () နှင့် ob_gzhandler function ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
သင်အလွန်ရှုပ်ထွေးသောသို့မဟုတ် dynamically ထုတ်ပေးသောအကြောင်းအရာများကို output လုပ်ရန်လိုအပ်သည့်အခါ, ထုတ်လုပ်မှုကာလအတွင်း browser မှ output မှ output များသို့ထုတ်လွှင့်ခြင်းမှရှောင်ရှားရန် output buffer ကိုသုံးနိုင်သည်။
ob_start () နှင့် ob_end_flush () သည် PHP output buffering ယန္တရားတွင်အလွန်အရေးကြီးသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ၎င်းတို့သည် Page output ကိုပိုမိုထိရောက်စွာစီမံခန့်ခွဲနိုင်, စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်နှင့်မလိုအပ်သော I / O စစ်ဆင်ရေးကိုလျှော့ချနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သောပူးပေါင်းဆောင်ရွက်မှုများမှတဆင့် 0 က်ဘ်ဆိုက်၏တုန့်ပြန်မှုမြန်နှုန်းနှင့်အသုံးပြုသူအတွေ့အကြုံများကိုတိုးတက်စေရန်အကြောင်းအရာပြုပြင်ခြင်း, စာမျက်နှာချုံ့ခြင်း, ဖွံ့ဖြိုးရေးလုပ်ငန်းစဉ်အတွင်းဤလုပ်ဆောင်မှုနှစ်ခုကိုအသုံးပြုခြင်းသည်ကြီးမားသောရလဒ်များကိုကိုင်တွယ်ရာတွင်သင့်ကိုပိုမိုသက်သာစေနိုင်သည်။