လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ob_list_handlers သည်အဘယ်ကြောင့် output handlers ၏မမှန်ကန်ကြောင်းစာရင်းကိုပြန်ပို့နိုင်သနည်း

ob_list_handlers သည်အဘယ်ကြောင့် output handlers ၏မမှန်ကန်ကြောင်းစာရင်းကိုပြန်ပို့နိုင်သနည်း

gitbox 2025-05-20

PHP တွင် OB_List_Handlers () function သည်လက်ရှိ output buffer အတွက်ကိုင်တွယ်စာရင်းတစ်ခုကိုပြန်ပေးသည့်အလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ output buffer ယန္တရားသည်အကြောင်းအရာများကို cach capressing သို့မဟုတ်ပြုပြင်မွမ်းမံခြင်းကဲ့သို့သော browser သို့မပို့မီ output အကြောင်းအရာများကိုလုပ်ဆောင်ရန်ခွင့်ပြုသည်။ သို့သော်အချို့သောကိစ္စရပ်များတွင် ob_list_handlers () ကို အသုံးပြုခြင်း () သည်တိကျစွာသို့မဟုတ်ခြွင်းချက် output buffer handlers စာရင်းကိုဖြစ်ပေါ်စေနိုင်သည်။ ဤဆောင်းပါးသည်ဤအခြေအနေ၏ဖြစ်နိုင်ချေရှိသောအကြောင်းရင်းများကိုစူးစမ်းလေ့လာပြီးဖြေရှင်းနည်းများပေးလိမ့်မည်။

1 ။ output buffer ဆိုတာဘာလဲ။

output buffer သည် PHP တွင် output processing လုပ်ရန်ယန္တရားတစ်ခုဖြစ်သည်။ output buffer ကိုဖွင့်ထားသည့်အခါ PHP သည် browser သို့ချက်ချင်းမပို့မည့်အစား Buffer ရှိ output data ကိုသိမ်းဆည်းထားသည်။ ဤနည်းအားဖြင့် developer များကနောက်ဆုံးတွင် output မဖြစ်မီအချက်အလက်များကိုပြုပြင်နိုင်သည်။ ဘုံ output buffer လုပ်ဆောင်ချက်များကို:

  • ob_start () - output buffer ကို enable ။

  • ob_end_flush () : ကြားခံပိတ်ပြီးအကြောင်းအရာကိုထုတ်ပေးသည်။

  • ob_get_contents () : ကြားခံပါအကြောင်းအရာများကိုရယူပါ။

2 ။ ob_list_handlers ()?

ob_list_handlers () function သည် PHP တွင်အလုပ်လုပ်နေသော function တစ်ခုဖြစ်ပြီးလက်ရှိ output buffer စာရင်းကိုပြန်ပို့သော PHP တွင် built-in function ဖြစ်သည်။ Developer များကမည်သည့်ကြားခံကိုင်တွယ်သူများကိုလက်ရှိဖွင့်ထားကြောင်းကိုတွေ့မြင်နိုင်သည်။ ဥပမာအားဖြင့်ရလဒ်ကိုချုံ့ခြင်းသို့မဟုတ်သစ်ထုတ်လုပ်ရေးအတွက်ကိုင်တွယ်ရန်အချို့သောကိုင်တွယ်မှုများရှိနိုင်သည်

 // နမူနာ:လက်ရှိ output buffer handler ကိုကြည့်ပါ
print_r(ob_list_handlers());

3 ။ အဘယ်ကြောင့်တိကျသောသို့မဟုတ်ခြွင်းချက် output buffer handler စာရင်းကိုသင်ရသနည်း။

Ob_list_Handlers () function သည်အလွန်အသုံး 0 င်သည်, အချို့သောကိစ္စရပ်များတွင်၎င်းကိုအသုံးပြုခြင်းသည်မတိကျသောသို့မဟုတ် output output buffer handlers ၏ထူးခြားသောသို့မဟုတ်ထူးခြားသောစာရင်းများကိုဖြစ်ပေါ်စေနိုင်သည်။ ဤတွင်ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက်အချို့ကိုဖော်ပြထားသည်။

3.1 ။ output buffer ကိုမှန်ကန်စွာဖွင့်ထားတာမဟုတ်ပါဘူး

ob_list_handlers မှပြန်လာသောစာရင်း () တွင်လက်ရှိတက်ကြွသော output buffer handler သာပါ 0 င်သည်။ အကယ်. output buffer ကိုဖွင့်ထားပါက ob_list_handlers () သည် အချည်းနှီးသောခင်းကျင်းမှုကိုပြန်ပို့သည်။ ဤကိစ္စတွင် output buffer ကိုမခိုင်မာစေရန်မှားယွင်းစွာပြုလုပ်နိုင်ပြီး၎င်းသည် buffer ကိုရှင်းလင်းရန် OB_END_CLEAN () OB_ENG_FFLUSH () ကိုသာခေါ်ဆိုခြင်းဖြစ်နိုင်သည်။

3.2 ။ မျိုးစုံ output ကြားခံ

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

3.3 ။ အမှားကြားခံ handler sequence ကို

OB_START () function သည် developer များကို buffer handlers များကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ လက်ကိုင်မျိုးစုံသည်တူညီသောကြားခံနှင့်တွဲဖက်ပါက ob_list_handlers () ပြန်လာသောအမှာစာသည် developer များကိုရှုပ်ထွေးစေနိုင်သည်။ အထူးသဖြင့်ကိုင်တွယ်သူများကို dynamically dynamically adding သို့မဟုတ်ဖယ်ရှားခြင်းသို့မဟုတ်ဖယ်ရှားခြင်းခံရသောအခါကြားခံ၏အပြုအမူသည်မတည်မငြိမ်ဖြစ်လာနိုင်သည်။

3.4 ။ ခေါ်ဆိုမှုအမိန့်၏အကျိုးသက်ရောက်မှု

အချို့ဖြစ်ရပ်များတွင် ob_start () နှင့်အခြား output buffer function များကိုမှားယွင်းစွာခေါ်ဆိုသည် ဥပမာအားဖြင့် output buffer သည် script execution ၏မတူညီသောအဆင့်ဆင့်တွင်ဖွင့်ထားနိုင်သည်။ ၎င်းသည် function ကိုလက်ရှိကိုင်တွယ်စာရင်းကိုမှန်ကန်စွာအသိအမှတ်မပြုရန်ဖြစ်စေနိုင်သည်။

4 ။ ဒီပြ problem နာကိုဘယ်လိုဖြေရှင်းရမလဲ။

4.1 ။ output ကြားခံ၏ status ကိုစစ်ဆေးပါ

ob_list_handlers မသုံးမီ () ပထမ ဦး စွာ output buffer ကို enable လုပ်ထားပါ။ ob_list_handlers () မှန်ကန်သောစာရင်းကိုပြန်ပို့နိုင်ရန်အတွက် ob_start () ကို ခေါ်ဆိုခြင်းဖြင့် Buffer ကိုစတင်ရန်သင်စတင်နိုင်သည်။

 // output ကြားခံစတင်ပါ
ob_start();
// လက်ရှိ output buffer handler ကိုရယူပါ
print_r(ob_list_handlers());

4.2 ။ မျိုးစုံကြားခံစီမံခန့်ခွဲ

သင်၏လျှောက်လွှာသည် output buffer များစွာကိုအသုံးပြုပါကကြားခံတစ်ခုစီအတွက်ကိုင်တွယ်သူကိုမှန်ကန်စွာသတ်မှတ်ပြီးသင့်လျော်သောအချိန်၌ကြားခံကိုပိတ်ထားကြောင်းသေချာပါစေ။ Buffer ကိုရှင်းလင်းရန်သို့မဟုတ် obfer ကို obfer ကိုရှင်းလင်းရန် OB_END_FLUSH ( ) ကိုသုံးရန် OB_CLEAN ( ) ကိုသုံးနိုင်သည်။

4.3 ။ ကြားခံအမိန့်ကိုစစ်ဆေးပါ

အကယ်. သင်သည် Buffer Handlers မျိုးစုံကိုသုံးပါကသူတို့၏အမိန့်ကိုဂရုပြုပါ။ Buffer ၏မှန်ကန်သောစီမံခန့်ခွဲမှုကိုသေချာစေရန် OB_START () ကိုခေါ်သည့်အခါ callback function ကိုသင်သတ်မှတ်နိုင်သည်။

 // output buffers စီမံရန် callback functions ကိုသုံးပါ
ob_start('my_callback_function');

4.4 ။ ခေါ်ဆိုရန် script ၏အမိန့်ကိုချိန်ညှိပါ

script ၏မှန်ကန်သောတည်နေရာအတွက် ob_start () , ob_end_flush () နှင့် ob_clean) ကဲ့သို့သောလုပ်ဆောင်မှုများကိုခေါ်ဆိုရန်သေချာစေပါ။ မမှန်ကန်သောခေါ်ဆိုမှုအမိန့်သည်မတိကျသော output output buffer handler စာရင်းကိုဖြစ်ပေါ်စေနိုင်သည်။

5 ။ ဥပမာ - output buffer debug debug

သင့်တွင် PHP ဇာတ်ညွှန်းရှိပြီး output buffer ၏ status ကို debug လုပ်လိုပါကအောက်ပါကုဒ်ကိုသုံးနိုင်သည်။

 // output ကိုကြားခံ Enable
ob_start();

// ရိုးရှင်းတဲ့ handler ထည့်ပါ
ob_start(function ($buffer) {
    return str_replace('old', 'new', $buffer);
});

// အကြောင်းအရာအချို့ကို output
echo "This is old text.";

// output ကို buffered အကြောင်းအရာကိုရယူပါ
$output = ob_get_contents();

// Buffer Handlers ၏လက်ရှိစာရင်းကိုရယူပါ
$handlers = ob_list_handlers();

// ကြားခံကိုပိတ်ပါ
ob_end_flush();

// Printout အကြောင်းအရာနှင့် Handler စာရင်း
echo $output;
print_r($handlers);

ဒီဥပမာမှာ Buffer ကို enable လုပ်ဖို့ Ob_start () ကို သုံးခဲ့တယ်။ ob_list_handlers မှတဆင့် buffers ၏ကိုင်တွယ်သူစာရင်းကိုရယူပါ။

နိဂုံးချုပ်အားဖြင့်

ob_list_handlers () function ကိုသုံးသောအခါ output buffer handler စာရင်းသည်တိကျသောသို့မဟုတ်ခြွင်းချက်ဖြစ်နိုင်သည်။ အဓိကအကြောင်းရင်းများတွင်မမှန်ကန်သောကြားခံ activation, output buffers အမြောက်အများကိုမမှန်မကန်လှုပ်ရှားမှု, မသင့်လျော်သောအငြင်းပွားမှုများကိုရှုပ်ထွေးစေခြင်း,