လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ob_list_handlers ကို အသုံးပြု. မလိုအပ်သော cache hierarchy ကိုမည်သို့သန့်ရှင်းရေးလုပ်နည်း

ob_list_handlers ကို အသုံးပြု. မလိုအပ်သော cache hierarchy ကိုမည်သို့သန့်ရှင်းရေးလုပ်နည်း

gitbox 2025-05-28

ရှုပ်ထွေးသောထုတ်လုပ်မှုထိန်းချုပ်မှုအတွက် PHP ကိုအသုံးပြုသောအခါအလွန်လက်တွေ့ကျသောယန္တရားတစ်ခုဖြစ်သည်။ သို့သော်တစ်ခါတစ်ရံတွင်ကျွန်ုပ်တို့သည်အသိုက်လုပ်ထားသောကြားခံများနှင့်ကြုံတွေ့ရလိမ့်မည်။ ဤအချိန်တွင် ob_list_handlers () function ကိုသင်၏ညာဘက် -andler ဖြစ်လာနိုင်သည်။

ဤဆောင်းပါးသည် Ob_list_Handlers ၏အခန်းကဏ် and နှင့်အသုံးပြုမှုဆိုင်ရာအခြေအနေများနှင့်အသုံးပြုမှုအခြေအနေများနှင့်အခြား oblist_handlers () ကို အသေးစိတ်ဖော်ပြရန်နှင့်အခြား output buffer cleaning ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။

1 ။ ob_list_handlers () ?

ob_list_handlers () သည် PHP မှပါ 0 င်သည့်လုပ်ဆောင်ချက်တစ်ခုမှာလက်ရှိတက်ကြွသော output buffer processor များအားလုံးစာရင်းအားလုံးကိုပြန်လည်ပေးအပ်ရန်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ Return Value ဆိုသည်မှာ array တစ်ခုဖြစ်ပြီး element တစ်ခုစီသည် Buffer Processor ၏အမည်ကိုကိုယ်စားပြုသည် ( "defaultput_handler" , "ob_gzhandler" , "ob_gzhandler" စသည်ဖြင့် "mb_gzhandler",

function ကိုအဓိပ္ပါယ်:

 array ob_list_handlers(void)

၎င်းသည်မည်သည့် parameters တွေကိုလက်မခံပါ။ လက်ရှိဖွင့်ထားသည့် output buffer အားလုံး၏ processor အမည်ကိုပြန်ပို့သည်။

2 ။ အဘယ်ကြောင့်အသုံးပြု?

ကြီးမားသော applications များတွင် (အထူးသဖြင့် WordPress, Laravel ကဲ့သို့သော CMS သို့မဟုတ်မူဘောင်များအသုံးပြုသောအခါ) output buffer သည်အလွှာမျိုးစုံကိုမကြာခဏဖွင့်လေ့ရှိသည်။ စာမျက်နှာသည်ကွက်လပ်တစ်ခုသို့မဟုတ် output သည်ကိုက်ညီမှုမရှိပါဖြစ်ဖူးသည်နှင့်ပြ the နာကိုနေရာချထားရန်အလွန်ခက်ခဲသည်။

ob_list_handlers () ကို အသုံးပြုခြင်း () သည်လက်ရှိတွင် output buffer ၏အလွှာအလွှာမည်မျှရရှိနိုင်ကြောင်းနှင့် Output Buffer ကို Debug လုပ်ရန်,

3 ။ လက်တွေ့ကျတဲ့ဥပမာ - ပိုလျှံ output buffers ကိုကြည့်ရှုသန့်ရှင်းအောင်ပြုလုပ်ခြင်း

ဥပမာ 1: Buffer ပရိုဆက်ဆာများအားလုံးကိုစာရင်းပြုစုပါ

 ob_start('ob_gzhandler');
ob_start();

$handlers = ob_list_handlers();

echo "လက်ရှိ output buffer ပရိုဆက်ဆာရှိပါတယ်:" . count($handlers) . " အထပ်<br>";
foreach ($handlers as $index => $handler) {
    echo "1 ။ " . ($index + 1) . " အထပ်处理器:$handler<br>";
}

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

 လက်ရှိ output buffer ပရိုဆက်ဆာရှိပါတယ်:2 အထပ်
1 ။ 1 အထပ်处理器:default output handler
1 ။ 2 အထပ်处理器:ob_gzhandler

မှတ်စု: array တွင်အမိန့်သည် အတွင်းအကျဆုံးအလွှာမှ အမိန့်သည် Ob_start () မှဖုန်းနံပါတ်ကိုပထမနေရာတွင်ပထမဆုံးအဆင့်သတ်မှတ်ထားသည်။

ဥပမာ 2: output buffers အားလုံးကိုသန့်ရှင်းရေး

 while (ob_get_level() > 0) {
    ob_end_clean(); // သို့မဟုတ်အသုံးပြုပါ ob_end_flush() buffered ဒေတာပေးပို့ပါ
}

အကယ်. သင်သည် output buffer ကို "reset" လိုပါကဤကုဒ်သည်အမွေကြားခံအလွှာမရှိပါ။

4 ။ လက်တွေ့ကျသောလျှောက်လွှာ - တတိယပါတီ output ကိုချွင်းချက်ချခြင်း

သင်တတိယပါတီ SDK ကို အသုံးပြု. စာမျက်နှာသည်အကြောင်းအရာများကိုဘယ်တော့မှမဖော်ပြထားပါဟုတွေ့ရှိရသည်။ အောက်ပါ debugging code ကိုထည့်သွင်းနိုင်ပါတယ်:

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

ထိုအခါ output ကိုကြောင်းတွေ့ရှိခဲ့ပါတယ်။

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

၎င်းသည် output buffer ကိုအလွှာမျိုးစုံဖြင့်အသိုက်ထားကြောင်းဖော်ပြသည်။ ယခုအချိန်တွင်သင်သည် Ob_gzhandler ကို Gzip ဖြစ်သည့်ပြ a နာရှိမရှိကြည့်ရန်အတွက်ပရိုဆက်ဆာများကိုသင့်လျော်စွာသန့်ရှင်းရေးလုပ်ရန်သို့မဟုတ်ပိတ်ရန်ရွေးချယ်နိုင်သည်။

5 ။ အမှန်တကယ်စီမံကိန်းအကြံပြုချက်များ

  • Output ချွင်းချက်များကို debugging လုပ်သည့်အခါလက်ရှိကြားခံဖွဲ့စည်းပုံကိုအလျင်အမြန်နားလည်ရန် OB_List_Handlers () ကို သေချာစွာသုံးပါ။

  • ဇာတ်ညွှန်းသည်မမျှော်လင့်သော output နှောင့်နှေးမှုကိုရှောင်ရှားရန် script ကိုမပြီးခင်ကြားခံသည် flush သို့မဟုတ် သန့်ရှင်း ရေးလုပ်ပါ။

  • ရှင်းလင်းသောအကြောင်းပြချက်များမရှိဘဲ ob_start () ခေါ်ဆိုမှုများလွန်းခြင်းများကိုရှောင်ကြဉ်ပါ။

6 ။ URL ပြန်ရေးသို့မဟုတ်ခုန်နှင့်အတူတွဲဖက်အသုံးပြုမှုအတွက်အသုံးပြုခဲ့သည်

သင် header ကို သုံးပါက url တစ်ခုကိုပြုလုပ်ပါက "headers sended bader" အမှားတစ်ခုသို့ရောက်သောအခါ၎င်းသည် output buffer ကိုမပြုလုပ်သောကြောင့်ဖြစ်သည်။

 ob_start();
// အခြား output ကိုယုတ္တိဗေဒ

header("Location: https://gitbox.net/user/login");
ob_end_flush();
exit;

ဒီပြ problem နာအမျိုးအစားကိုကြားခံသည်ကြိုတင်ပြင်ဆင်မှုများကိုကြိုတင်ပြင်ဆင်ထားခြင်းမရှိသေးကြောင်းသေချာစေရန်ရှောင်ရှားနိုင်သည်။

အကျဉ်းချုပ်

ob_list_handlers () သည် developer များစွာကိုလျစ်လျူရှုသော gadget တစ်ခုဖြစ်သည်, သို့သော် output buffering ပြ problems နာများကိုဖြေရှင်းသည့်အခါအလွန်အစွမ်းထက်သည်။ ၎င်း၏အသုံးပြုမှုကိုကျွမ်းကျင်ခြင်းသည်ရှုပ်ထွေးသောစီမံကိန်းများအတွက်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်နှင့် Debugging ထိရောက်မှုကိုတိုးတက်စေရန်သင့်အားခွင့်ပြုလိမ့်မည်။

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