လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ob_list_handler ကိုသုံးပါ

ob_list_handler ကိုသုံးပါ

gitbox 2025-05-28

ထုတ်လုပ်မှုကြားခံထိန်းချုပ်မှုအတွက် PHP ကိုအသုံးပြုသောအခါ developer များသည် Ob_start မှတစ်ဆင့် cache handlers တစ်ခုကိုမကြာခဏမှတ်ပုံတင်ကြသည်။ သို့သော်စီမံကိန်းအတွင်းရှိ buffer processing function မျိုးစုံကိုထပ်ခါတလဲလဲထုတ်ပြန်ပါက၎င်းသည် output ကိုအကြိမ်ပေါင်းများစွာလုပ်ဆောင်နိုင်ပြီးစွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်စေနိုင်သည်။

ဤမလိုအပ်သောမှတ်ပုံတင်ခြင်းကိုရှောင်ရှားနိုင်ရန်အတွက် Ob_list_Handlers () function ကိုသုံးနိုင်သည်။ လက်ရှိမှတ်ပုံတင်ထားသော output output buffering programs များအားကြည့်ရှုရန်နှင့်အမှန်တကယ်အခြေအနေများအပေါ် အခြေခံ. ဆုံးဖြတ်ချက်များနှင့်ထိန်းချုပ်မှုများကိုကြည့်ရှုရန် OB_List_Handlers () function ကိုသုံးနိုင်သည်။

ob_list_handlers () ?

ob_list_handlers () သည် PHP မှပါ 0 င်သည့်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ Ob_start () ဟုခေါ်သည့်အခါတိုင်း callback function ကိုဖြတ်သန်းသွားသောအခါ function name ကို buffer process stack တွင်ထည့်သွင်းထားသည်။

နမူနာ output ကို:

 array(
    [0] => default output handler,
    [1] => gzhandler
)

အဘယ်ကြောင့်ထပ်ကိုင်တွယ်ကိုင်တွယ်သူများကိုစစ်ဆေးပါ?

လျှောက်လွှာတစ်ခု၏အစိတ်အပိုင်းများကိုမိတ္တူကူးပါ။

 ob_start('gzhandler');

ရလဒ်မှာ output content သည် Gzhandler မှဖိအားပေးမှုကိုအကြိမ်ကြိမ်ဖိအားပေးခံရခြင်းကြောင့် browser ကိုမှန်ကန်စွာခွဲခြမ်းစိတ်ဖြာရန်ပျက်ကွက်ခြင်းသို့မဟုတ်အကြောင်းအရာပုံမှန်မဟုတ်သောဖြစ်သည်။

ဤအရာကိုကာကွယ်ရန် OB_List_Handlers () ကိုသုံးနိုင်သည်။ output buffering function အသစ်ကိုမှတ်ပုံတင်ခြင်းမပြုမီစစ်ဆေးရန်ကျွန်ုပ်တို့သည် OB_List_Handlers () ကို စစ်ဆေးနိုင်သည်။

ob_list_handlers () မှန်ကန်စွာအသုံးပြုနည်း

Gzhandler ၏ မလုံလောက်မှုကိုမည်သို့ရှောင်ရှားရမည်ကိုပြသသည့်အမှန်တကယ်ကုဒ်နမူနာတစ်ခုရှိသည်။

 <?php
// ကိုင်တွယ်သူတစ် ဦး မှတ်ပုံတင်ခဲ့ရှိမရှိစစ်ဆေးပါ
function start_unique_ob_handler($handlerName) {
    $handlers = ob_list_handlers();

    if (!in_array($handlerName, $handlers)) {
        ob_start($handlerName);
    } else {
        // သင်မှတ်တမ်းများသို့မဟုတ် output ကို debugging သတင်းအချက်အလက်များကိုမှတ်တမ်းတင်နိုင်ပါတယ်
        error_log("output buffer handler '$handlerName' မှတ်ပုံတင်ထားပါသည်,ထပ်တူမှတ်ပုံတင်ခြင်းကိုကျော်ပါ。");
    }
}

// ငါတို့သုံးချင်တာဆိုပါစို့ gzip ချုံ့ output ကို
start_unique_ob_handler('gzhandler');

// output ကိုအကြောင်းအရာ
echo "ငါတို့ site မှကြိုဆိုပါသည်:https://gitbox.net/page";
?>

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

GZHANDLER အရင်မှတ်ပုံတင်ခြင်းမရှိပါက function ကိုထည့်သွင်းလိမ့်မည်။ ဒီလိုမှမဟုတ်ရင်အဲဒါကိုလုံခြုံစွာကျော်သွားလိမ့်မယ်။

အပိုဆောင်းအကြံပြုချက်များ

  • Modular Systems တွင် outpar outparing buffering ကိုအသုံးပြုသောအခါ (ဥပမာ plug-in ဗိသုကာများကဲ့သို့) သင်၏ကိုယ်ပိုင်ကြားခံမှတ်ပုံတင်ခြင်းလုပ်ဆောင်မှုကို adapcapsult adapcapsulate on unified_handlers () ကို သုံးရန်အကြံပြုသည်။

  • စီမံကိန်းတွင်အတူတကွအလုပ်လုပ်နေသော developer များစွာရှိပါက OB_START ၏ကြိမ်နှုန်းနှင့်တည်နေရာကိုဂရုပြုရန်အကြံပြုသည်။

  • မှတ်ချက် - PHP အတွက် default outler handler သည်အသုံးပြုသူသတ်မှတ်ထားသော handler နှင့်မသက်ဆိုင်သော "default outler handler" ဖြစ်သည်။ သို့သော်စာရင်းတွင်လည်းပါ 0 င်မည်ဖြစ်သည်။

အကျဉ်းချုပ်

ob_list_handlers () ကို အသုံးပြု. PHP applications များတွင် output buffer handlers များကိုထပ်ခါတလဲလဲမှတ်ပုံတင်ခြင်းကိုပြန်လည်မှတ်ပုံတင်ခြင်းကိုတားဆီးရန်ကူညီရန်ရိုးရှင်းသော်လည်းအလွန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။ ဤနည်းပညာပိုင်းဆိုင်ရာအားဖြင့်ပရိုဂရမ်၏ကြံ့ခိုင်မှုနှင့် output content ၏ရှေ့နောက်ညီညွတ်မှုကိုတိုးတက်အောင်လုပ်နိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အငြင်းပွားဖွယ်ရာမှတ်ပုံတင်ခြင်းမပြုမီစစ်ဆေးခြင်းအလေ့အထကိုဖော်ထုတ်ခြင်းသည်အရည်အသွေးမြင့် PHP applications များကိုတည်ဆောက်ခြင်း၏အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။

output output ကိုကြားခံအတွက်ထိန်းချုပ်မှုဆိုင်ရာအကြံပြုချက်များအကြောင်းပိုမိုလေ့လာလိုပါကဥပမာများနှင့်ညွှန်ကြားချက်များအတွက်တရားဝင်မှတ်တမ်းများကိုသင်ရည်ညွှန်းနိုင်သည်