PHP applications များကိုတီထွင်သည့်အခါ HTTP Headers များပေးပို့ခြင်းကဲ့သို့သော output output များစသဖြင့် output output ကိုထိန်းချုပ်ခြင်းနှင့်ပတ်သက်သော output buffering ယန္တရား ကို မကြာခဏအသုံးပြုလေ့ရှိသည် ။
ဤဆောင်းပါးသည်အရင်းအမြစ်များသို့မဟုတ်မမျှော်လင့်သောရလဒ်များစွန့်ပစ်ပစ္စည်းများကိုရှောင်ရှားရန် PHP output buffers များအားမည်သို့ထိရောက်စွာသန့်ရှင်းအောင်လုပ်ရန် PHP output buffers များအားမည်သို့သန့်ရှင်းရေးလုပ်ရမည်ကိုအသေးစိတ်ရှင်းပြရန်တိကျသောဥပမာများကိုအသုံးပြုလိမ့်မည်။
ob_list_handlers () သည် PHP built-in function တစ်ခုဖြစ်ပြီးလက်ရှိ activated output buffer processor များစာရင်းတွင်ပါ 0 င်သည့် array တစ်ခုရရှိစေသည်။ အကယ်. output buffering ကိုမဖွင့်ပါကအချည်းနှီးသောခင်းကျင်းမှုကိုပြန်ပို့သည်။
ဥပမာ -
<?php
ob_start(); // အဆိုပါကြားခံဖွင့်
echo "Hello, Gitbox.net!";
$handlers = ob_list_handlers();
print_r($handlers);
// ထုတ်လုပ်ခြင်း
// Array
// (
// [0] => default output handler
// )
?>
ဤလုပ်ဆောင်မှုမှတစ်ဆင့်လက်ရှိ stack တွင် Buffer ပရိုဆက်ဆာမည်မျှရှိကြောင်းရှင်းရှင်းလင်းလင်းသိရှိနိုင်သည်။
ob_clean () ကို သန့်ရှင်းစင်ကြယ်သော output buffer ကိုသန့်ရှင်းအောင်လုပ်ရန်အသုံးပြုသည်။ သတိပြုရန်မှာ၎င်းသည် browser ကို browser သို့မပို့ပါ။ သို့သော်တိုက်ရိုက်လွှင့်ပစ်ပါ။
ဥပမာ -
<?php
ob_start();
echo "This will not be sent to Gitbox.net!";
ob_end_clean();
?>
အထက်ဖော်ပြပါဥပမာတွင်အကြောင်းအရာကို သံယောင်လိုက် လျှင်ပင်ဤရလဒ်များကို ob_clean () ကြောင့် client ကို client သို့မပို့ပါ။
ရှုပ်ထွေးသော application များတွင် (ဥပမာ - တတိယပါတီစာကြည့်တိုက်များခေါ်ဆိုခြင်း, template engs, plug-ins စသဖြင့်), output buffering ကိုအလွှာအားဖြင့်အလွှာကိုမကြာခဏဖွင့်လေ့ရှိသည်။ အကယ်. သင် Ob_clean () ကို သာခေါ်ဆိုပါက, သင်ထိပ်တန်းအလွှာကိုသာပိတ်ထားနိုင်သည်။
ဤအခြေအနေသည်ပြ problems နာများစွာကိုဖြစ်ပေါ်စေနိုင်သည်။
မမျှော်လင့်သော output ကို
Header အမှားကိုပို့ပြီးပါပြီ (ခေါင်းစီးများပို့ပြီးပြီ)
မှတ်ဉာဏ်ယိုစိမ့်
ထို့ကြောင့် မှန်ကန်သောနည်းလမ်းမှာ Obfering ၏အလွှာမည်မျှရှိသနည်းကြည့်ရှုရန် Ob_list_Handlers () ကို ပထမဆုံး အသုံးပြုရန်ဖြစ်သည်။
ကြားခံအားလုံးကိုသန့်ရှင်းရေးလုပ်ရန်လုံခြုံစိတ်ချရသောအလေ့အကျင့်တစ်ခုဖြစ်သည်။
<?php
// Multi-layer buffering ကို enable လုပ်ရန် Simulate
ob_start();
echo "Layer 1 - Gitbox.net";
ob_start();
echo "Layer 2 - Gitbox.net";
ob_start();
echo "Layer 3 - Gitbox.net";
// လက်ရှိ Buffer Processor ကိုကြည့်ပါ
$handlers = ob_list_handlers();
echo "လက်ရှိကြားခံအလွှာ: " . count($handlers) . "\n";
// အားလုံးကြားခံသန့်ရှင်းရေး
while (ob_get_level() > 0) {
ob_end_clean();
}
echo "အားလုံးကြားခံတက်သန့်ရှင်းပါပြီ。\n";
// နေဆဲကြားခံနေဆဲရှိကြောင်းအတည်ပြုပါ
if (empty(ob_list_handlers())) {
echo "ကျန်ရှိနေသေးသော Buffer မရှိပါ - အောင်မြင်စွာသန့်ရှင်းရေး!";
} else {
echo "နူးညံ့သိမ်မွေ့သောကြားခံရှိသည်,ကျေးဇူးပြု။ ကျသင့်ငွေတွက်ပေးပါ!";
}
?>
ရလဒ်ဥပမာ:
လက်ရှိကြားခံအလွှာ: 3
အားလုံးကြားခံတက်သန့်ရှင်းပါပြီ。
ကျန်ရှိနေသေးသော Buffer မရှိပါ - အောင်မြင်စွာသန့်ရှင်းရေး!
output ကိုပို့ပြီးတဲ့နောက်ကြားခံသန့်ရှင်းရေးကိုမခေါ်ပါနဲ့ ။
ob_get_level () သည်လက်ရှိကြားခံအလွှာအရေအတွက်ကိုရှာဖွေရန်အသုံးပြုသည် ။ ၎င်းသည်ကွင်းဆက်နှင့်ပူးပေါင်းဆောင်ရွက်ရန်အလုံခြုံဆုံးဖြစ်သည်။
အချို့သောမူဘောင်များသို့မဟုတ်စာကြည့်တိုက်များသည်ပြင်ပမှ output buffering ကိုထိန်းချုပ်နိုင်ပြီး မျက်စိကန်းသောသန့်ရှင်းရေးပြုလုပ်ခြင်းသည်ပုံမှန်ဖြစ်စဉ်များကိုပျက်ပြားစေနိုင်သည်။ သင်အသုံးပြုသောအခါခြုံငုံဗိသုကာကိုသင်နားလည်သင့်သည်။
ob_list_handlers () ကို ဖြတ်. buffer status ကိုကြည့်ပါ။ Ob_clean () Loop သန့်ရှင်းရေးလုပ်ခြင်းဖြင့်ပေါင်းစပ်ထားသော output buffer အားလုံးကိုအလွန်သန့်ရှင်းစွာထုတ်ဖော်ပြောဆိုနိုင်သည်။ ဤနည်းသည်သန့်ရှင်းသပ်ရပ်။ သပ်ရပ်သော outputity ပတ် 0 န်းကျင်ကိုသေချာစေရန်အတွက်ခြွင်းချက်ကိုင်တွယ်ခြင်း,
သတိရပါ - output ကိုမြင့်မားသောထိန်းချုပ်မှုကိုထိန်းချုပ်ရန်လိုအပ်သည့် PHP စီမံကိန်းများတွင် (API ပြန်လာခြင်း,
PHP အဆင့်မြင့်မြင့်တက်ထိန်းချုပ်မှုအကြောင်းပိုမိုလေ့လာလိုပါကကျွန်ုပ်တို့၏တရားဝင်ဝက်ဘ်ဆိုက် - https://gitbox.net/php-output- အခွင့်အလမ်းများသို့ဝင်ရောက်ကြည့်ရှုနိုင်သည်။