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

ob_list_handlers အသုံးပြုသောအခါ output အမှားအယွင်းများကိုဘယ်လိုရှောင်ရှားမလဲ

gitbox 2025-05-20

PHP ၏ output output ကိုကြားခံယန္တရားတွင် Ob_list_handlers () သည်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းမှတစ်ဆင့်ကျွန်ုပ်တို့သည်မည်သည့် output processor များကိုတက်ကြွစွာနားလည်နိုင်သည်,

သို့သော် OB_List_Handlers () သည် အချို့သောအသုံးပြုမှုအခြေအနေများတွင် oblist justs သို့မဟုတ်မမျှော်လင့်သောအပြုအမူများကိုလည်းပစ်ချနိုင်သည်။ ဤဆောင်းပါးသည်ဤကဲ့သို့သောဘုံမေးခွန်းများကိုဖုံးအုပ်ပြီး၎င်းတို့ကိုရှောင်ရှားရန်နည်းလမ်းများပေးလိမ့်မည်။

output buffering ယန္တရားကိုနိဒါန်း

PHP တွင် Output Buffering သည် developer များက developer များက scripts ၏ output ကိုထိန်းချုပ်ရန်ခွင့်ပြုသည်။ Buffer ကို enable လုပ်ပါက PHP သည် 0 န်ဆောင်မှုခံယူမည့်အစား php ကို memory တွင်သိမ်းဆည်းသည်။ Buffer ကိုလည်ပတ်ရန်အောက်ပါလုပ်ဆောင်ချက်များကိုသင်အသုံးပြုနိုင်သည်။

  • ob_start () - output buffering ကိုဖွင့်ပါ။

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

  • ob_clean () : ကြားခံရှင်းလင်းခြင်းနှင့်ပိတ်ပါ။

  • ob_list_handlers () - လက်ရှိကြားခံပရိုဆက်ဆာအားလုံးကိုစာရင်းပြုစုထားသည်။

ob_list_handlers () ဘုံထောင်ချောက်

Ob_list_Handlers () သည်မည်သည့်အရာကိုမဆိုတိုက်ရိုက်မထုတ်လုပ်နိုင်သော်လည်း,

1 ။ မမှန်ကန်ပါ buffer ပိတ်ခြင်းအမိန့်

OB_CRCLEAN () သို့မဟုတ် ob_clush () ဟုခေါ်သောအခါကျွန်ုပ်တို့သည် Buffer Stack ၏နိုင်ရန်အတွက် buffer ကိုပိတ်ထားရမည်။ အကယ်. သင်သည်ဤလုပ်ဆောင်မှုများကိုမည်သည့်နေရာတွင်မျှကြားမှကြားခံအဆင့်ကိုမသေချာပါစေနှင့်ခေါ်ဆိုပါကကြားခံဖွဲ့စည်းပုံကိုချိုးဖျက်ရန်လွယ်ကူပြီး "output send" အမှားတစ်ခုသို့ ဦး တည်ရန်လွယ်ကူသည်။

ဥပမာအမှားအယွင်း:

 ob_start();
echo "အကြောင်းအရာကိုထုတ်ယူခြင်း";

$handlers = ob_list_handlers();
foreach ($handlers as $handler) {
    ob_end_clean(); // အဲဒီလိုလုပ်ခြင်းအားဖြင့်မှားယွင်းသောကြားခံကိုပိတ်နိုင်သည်
}

လုပ်ရန်မှန်ကန်သောနည်းလမ်း -

 while (ob_get_level() > 0) {
    ob_end_clean();
}

တနည်းအားဖြင့်, သတ်သတ်မှတ်မှတ်ပရိုဆက်ဆာတစ်ခုတည်ရှိပြီးစစ်ဆေးပါ။

 $handlers = ob_list_handlers();
if (in_array('default output handler', $handlers)) {
    ob_end_clean();
}

2 ။ Output မတိုင်မီ header သို့မဟုတ် setcookie ခေါ်ဆိုခ

အကယ်. ကြားခံသည်စနစ်တကျရှင်းလင်းခြင်းသို့မဟုတ်ပိတ်ခြင်းမရှိပါက Output သည် header မက်ဆေ့ခ်ျပို့သောအခါအောက်ပါအမှားများကိုစတင်ကြုံတွေ့ရလိမ့်မည်ဟုထင်လိမ့်မည်။

 Warning: Cannot modify header information - headers already sent

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

နမူနာ fix:

 ob_start();
// အဘယ်သူမျှမအမှန်တကယ်အကြောင်းအရာဒီမှာ output ကိုဖြစ်ခဲ့သည်,လုံခြုံတဲ့ခေါ်ဆိုမှု header
header('Location: https://gitbox.net/dashboard');
ob_end_flush();

3 ။ obsist_handlers () output ရည်ရွယ်ချက်များအတွက် ()

Developer တချို့ developer များသည် debugging အတွက်လက်ရှိကြားခံပြည်နယ်မှတစ်ဆင့်လက်ရှိကြားခံပြည်နယ်မှ () ကို debugging လုပ်ရန်ကြိုးစားကြမည်မှာ,

အသုံးပြုရန်အကြံပြုထားခြင်းမရှိပါ

 print_r(ob_list_handlers()); // စေနိုင်သည် HTML ရှုပ်ထွေး output

အကြံပြုထားသောအသုံးပြုမှု:

 echo '<pre>';
print_r(ob_list_handlers());
echo '</pre>';

သို့မဟုတ် log in log in:

 error_log(print_r(ob_list_handlers(), true));

အကောင်းဆုံးအလေ့အကျင့်အကျဉ်းချုပ်

ob_list_handlers ကို အသုံးပြုသောအခါ output အမှားများကိုရှောင်ရှားနိုင်ရန်အတွက်အောက်ပါအချက်များကိုအကြံပြုပါသည်။

  1. ထုတ်လုပ်မှုပတ် 0 န်းကျင်ရှိ output buffer ဖွဲ့စည်းပုံကိုဖော်ထုတ်ခြင်းနှင့်ရှောင်ရှားခြင်းမပြုပါနှင့်ရှောင်ရှားခြင်းမပြုပါနှင့်။

  2. ကြားခံအဆင့်ကိုအမြဲတမ်းဆုံးဖြတ်ပြီး ob_get_level ကို သေချာအောင်လုပ်ပါ။

  3. Buffer ကိုပိတ်ထားသည့်အခါ header () , setcookie () နှင့်အခြားလုပ်ဆောင်မှုများကိုအသုံးပြုခြင်းကိုရှောင်ကြဉ်ပါ။

  4. ob_list_handlers () ရလဒ်ကိုထုတ်လွှင့်သည့်အခါတိုက်ရိုက်ပဲ့တင်ထပ်မည့်အစားမှတ်တမ်းကိုရေးဆွဲခြင်းသို့မဟုတ်မှတ်တမ်းသို့စာရေးခြင်းကိုဂရုပြုပါ။

  5. ရှင်းရှင်းလင်းလင်းကြားခံအလွှာတစ်ခုစီ၏တာ 0 န် 0 တ္တရားများကိုလက်ဝါးကပ်တိုင် 0 င်ရောက်ခြင်းကိုရှောင်ရှားရန်ရှင်းလင်းစွာခွဲခြားထားသည်။

ကောက်ချက်

Ob_List_Handlers () PHP output buffer buffer debugging အတွက်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သော်လည်းမလျော်ကန်သောအသုံးပြုမှုသည် output အမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။ ၎င်း၏လုပ်ဆောင်မှုကိုနားလည်ခြင်းနှင့်သင့်လျော်သောကြားခံစီမံခန့်ခွဲမှုနည်းလမ်းများကိုပေါင်းစပ်ပြီး application များ၏တည်ငြိမ်မှုနှင့်ထိန်းသိမ်းခြင်းကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။ ဤလုပ်ဆောင်မှုကို အသုံးပြု. အသေးစိတ်အချက်အလက်များကိုကျွမ်းကျင်မှုသည် PHP developer တိုင်းအတွက်အဆင့်မြင့်အဆင့်သို့ပြောင်းရွှေ့ရန်လိုအပ်သောခြေလှမ်းဖြစ်သည်။

ငါ့ကို ob_start မှာနောက်ထပ်အကြံဥာဏ်တွေထပ်ထည့်ချင်တာလား။