လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အချည်းနှီးသော array ပြန်လာ ob_list_handlers ၏ပြ problem နာကိုဖြေရှင်းပါ

အချည်းနှီးသော array ပြန်လာ ob_list_handlers ၏ပြ problem နာကိုဖြေရှင်းပါ

gitbox 2025-05-13

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်တခါတရံတွင်ကျွန်ုပ်တို့သည် output buffer (output buffering) ကိုလည်ပတ်ရန်သို့မဟုတ် debug လုပ်ရန်လိုအပ်သည်။ ob_list_handlers () သည်လက်ရှိလှုပ်ရှားမှု output buffer handlers များကိုကြည့်ရှုရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည်ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါအချည်းနှီးသောခင်းကျင်းမှုကိုပြန်လည်ရရှိသည့်အခြေအနေကိုကြုံတွေ့ရလိမ့်မည်။ ဤဆောင်းပါးသည်ဤပြ problem နာကိုနက်နက်နဲနဲခွဲခြမ်းစိတ်ဖြာပြီးထိရောက်သောဖြေရှင်းနည်းများပေးလိမ့်မည်။

1 ။ ob_list_handlers ကဘာလဲ?

ob_list_handlers () သည် PHP မှပေးသော function တစ်ခုဖြစ်ပြီးလက်ရှိတက်ကြွသော output buffer processor ကိုစာရင်းပြုစုရန်စီစဉ်ထားသည်။ ဘုံပရိုဆက်ဆာများသည် ပုံမှန် output handler , gzip handler , mb_output_handler စသည်တို့ပါဝင်သည်။

Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 array ob_list_handlers ( void )

ပြန်လာတန်ဖိုး - တက်ကြွသော output output processor အမည်များအားလုံးပါ 0 င်သည့် array ။

2 ။ Ob_list_Handlers သည်အချည်းနှီးသောခင်းကျင်းမှုကိုအဘယ်ကြောင့်ပြန်ပို့သနည်း။

Ob_list_handlers () ကို အချည်းနှီးသောခင်းကျင်းမှုကိုပြန်ပေးရန်ဘုံအကြောင်းပြချက်များစွာရှိသည်။

1 ။ output ကိုကြားခံဖွင့်မပေးပါ

ob_list_handlers မ ခေါ်မီ obsist_handlers ကိုမခေါ်မီ obsist buffering ကို enable လုပ်ထားပါကသဘာဝကျကျပရိုဆက်ဆာမရရှိနိုင်ပါ။

ဥပမာ -

 print_r(ob_list_handlers()); // ထုတ်လုပ်ခြင်း:Array ( )

ဤအချိန်တွင် OB_Start () သို့မဟုတ်အခြား function မရှိပါ။ ကြားခံသည်ဗလာဖြစ်သည်။

2 ။ output buffer ကိုကြိုတင်ပြင်ဆင်ခြင်းသို့မဟုတ်တံခါးပိတ်သည်

ob_clean ()) , OB_ENT_END_FLUSH () နှင့်အခြားလုပ်ဆောင်ချက်များကို ob_list_handlers () ကြားခံရှင်းရှင်းလင်းလင်းဖွင့်ရန်ခေါ်ယူပါက,

3 ။ Buffer ကို PHP startup item မှအလိုအလျောက်စတင်ခဲ့ပြီးလုပ်ငန်းများ၌ပြုလုပ်ခဲ့သည်

တခါတရံ PHP ၏ output buffering ယန္တရားကိုအလိုအလျောက်ဖွင့ ထားနိုင်သည် (ဥပမာ zlib ကဲ့သို့သောအခြား extections များမှတခြားယုတ္တိဗေဒများဖြင့်ပြုလုပ်နိုင်သည်။

3 ။ ob_list_handlers ၏ပြ problem နာကိုဖြေရှင်းနည်းအချည်းနှီးသောခင်းကျင်းမှုများကိုပြန်ပို့ခြင်း

နည်းလမ်း 1 - ရှင်းလင်းစွာထုတ်ဖော်ပြောကြားခြင်း

ob_start () ကို ob_list_handlers () ကိုမခေါ်မီဟုခေါ်သည်

 ob_start();
print_r(ob_list_handlers());
ob_end_clean();

output ကိုဖြစ်လိမ့်မည်:

 Array
(
    [0] => default output handler
)

နည်းလမ်း 2. ပရိုဆက်ဆာမျိုးစုံကိုသတ်မှတ်ပြီးစစ်ဆေးပါ

 function custom_handler($buffer) {
    return strtoupper($buffer);
}

ob_start("custom_handler");
print_r(ob_list_handlers());
ob_end_clean();

ထုတ်လုပ်မှု -

 Array
(
    [0] => custom_handler
)

stack order ကိုကြည့်ရှုရန်ပရိုဆက်ဆာမျိုးစုံထည့်နိုင်သည်။

နည်းလမ်း 3 - PHP.INI configuration နှင့်အလိုအလျောက်ကြားခံချိန်ညှိချက်များကိုစစ်ဆေးပါ

Php.ini တွင်သက်ဆိုင်ရာကြားခံယန္တရားမသန်စွမ်းမှုမရှိကြောင်းသေချာပါစေ။ ဥပမာအားဖြင့်, စစ်ဆေးပါ။

 output_buffering = Off
zlib.output_compression = Off

Enable လုပ်ရန်

 output_buffering = On

configuration ကိုပြုပြင်ပြီးနောက်ဝက်ဘ်ဆာဗာကိုပြန်လည်စတင်ပါ။

4 ။ လက်တွေ့ကျသော application တစ်ခု၏ဥပမာများ

ရှုပ်ထွေးသော output logic ကို debing လုပ်သည့်အခါ ob_list_handlers () ပြ the နာကိုရှာဖွေရန် Ob_list_handlers () ကိုပေါင်းစပ်နိုင်သည်။

ဥပမာအားဖြင့်:

 ob_start("ob_gzhandler");
ob_start();

echo "GitBox.net နမူနာဝက်ဘ်ဆိုက်ပါ。";

print_r(ob_list_handlers());

ob_end_flush();
ob_end_flush();

output ကိုဖြစ်လိမ့်မည်:

 Array
(
    [0] => default output handler
    [1] => ob_gzhandler
)

၎င်းသည်ကျွန်ုပ်တို့အားပြုပြင်ခြင်းနှင့် Debugal အမှားများကိုလေ့လာခြင်းအမိန့်ကိုနားလည်စေသည်။

5 ။ အကျဉ်းချုပ်

ob_list_handlers () အချည်းနှီးသောခင်းကျင်းမှုကိုအမြဲတမ်းပြန်ဖွင့်သည်မဟုတ်, နားလည်မှုလွဲမှားခြင်းကိုရှောင်ရှားရန်, function ကိုအသုံးမပြုခင် output buffering ကို enable လုပ်ထားပါသေချာအောင်လုပ်ပါ။ ဤပြ problem နာကို ob_start () သို့မဟုတ် PHP ၏ configuration options များကိုကြည့်ခြင်းဖြင့်ထိရောက်စွာဖြေရှင်းနိုင်သည်။ အမှန်တကယ်စီမံကိန်းများအနေဖြင့် output output buffering ၏လုပ်ဆောင်မှုဆိုင်ရာလူမှုရေးနိယာမကိုနားလည်ခြင်းသည်သင့်အားစာမျက်နှာအကြောင်းအရာများ၏ output output နှင့် processing ကိုပိုမိုပြောင်းလဲစေနိုင်သည်။

output buffering အကြောင်းပိုမိုသိရှိလိုပါက https://gitbox.net/docs/php-output-

သင်၏စမ်းသပ်ခြင်းအတွက်ပြီးပြည့်စုံသော debug script ဖိုင်ကိုကျွန်ုပ်ပူးတွဲလိုပါသလား။