ရှုပ်ထွေးသောထုတ်လုပ်မှုထိန်းချုပ်မှုအတွက် PHP ကိုအသုံးပြုသောအခါအလွန်လက်တွေ့ကျသောယန္တရားတစ်ခုဖြစ်သည်။ သို့သော်တစ်ခါတစ်ရံတွင်ကျွန်ုပ်တို့သည်အသိုက်လုပ်ထားသောကြားခံများနှင့်ကြုံတွေ့ရလိမ့်မည်။ ဤအချိန်တွင် ob_list_handlers () function ကိုသင်၏ညာဘက် -andler ဖြစ်လာနိုင်သည်။
ဤဆောင်းပါးသည် Ob_list_Handlers ၏အခန်းကဏ် and နှင့်အသုံးပြုမှုဆိုင်ရာအခြေအနေများနှင့်အသုံးပြုမှုအခြေအနေများနှင့်အခြား oblist_handlers () ကို အသေးစိတ်ဖော်ပြရန်နှင့်အခြား output buffer cleaning ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
ob_list_handlers () သည် PHP မှပါ 0 င်သည့်လုပ်ဆောင်ချက်တစ်ခုမှာလက်ရှိတက်ကြွသော output buffer processor များအားလုံးစာရင်းအားလုံးကိုပြန်လည်ပေးအပ်ရန်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ Return Value ဆိုသည်မှာ array တစ်ခုဖြစ်ပြီး element တစ်ခုစီသည် Buffer Processor ၏အမည်ကိုကိုယ်စားပြုသည် ( "defaultput_handler" , "ob_gzhandler" , "ob_gzhandler" စသည်ဖြင့် "mb_gzhandler",
array ob_list_handlers(void)
၎င်းသည်မည်သည့် parameters တွေကိုလက်မခံပါ။ လက်ရှိဖွင့်ထားသည့် output buffer အားလုံး၏ processor အမည်ကိုပြန်ပို့သည်။
ကြီးမားသော applications များတွင် (အထူးသဖြင့် WordPress, Laravel ကဲ့သို့သော CMS သို့မဟုတ်မူဘောင်များအသုံးပြုသောအခါ) output buffer သည်အလွှာမျိုးစုံကိုမကြာခဏဖွင့်လေ့ရှိသည်။ စာမျက်နှာသည်ကွက်လပ်တစ်ခုသို့မဟုတ် output သည်ကိုက်ညီမှုမရှိပါဖြစ်ဖူးသည်နှင့်ပြ the နာကိုနေရာချထားရန်အလွန်ခက်ခဲသည်။
ob_list_handlers () ကို အသုံးပြုခြင်း () သည်လက်ရှိတွင် output buffer ၏အလွှာအလွှာမည်မျှရရှိနိုင်ကြောင်းနှင့် Output Buffer ကို Debug လုပ်ရန်,
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 () မှဖုန်းနံပါတ်ကိုပထမနေရာတွင်ပထမဆုံးအဆင့်သတ်မှတ်ထားသည်။
while (ob_get_level() > 0) {
ob_end_clean(); // သို့မဟုတ်အသုံးပြုပါ ob_end_flush() buffered ဒေတာပေးပို့ပါ
}
အကယ်. သင်သည် output buffer ကို "reset" လိုပါကဤကုဒ်သည်အမွေကြားခံအလွှာမရှိပါ။
သင်တတိယပါတီ 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 နာရှိမရှိကြည့်ရန်အတွက်ပရိုဆက်ဆာများကိုသင့်လျော်စွာသန့်ရှင်းရေးလုပ်ရန်သို့မဟုတ်ပိတ်ရန်ရွေးချယ်နိုင်သည်။
Output ချွင်းချက်များကို debugging လုပ်သည့်အခါလက်ရှိကြားခံဖွဲ့စည်းပုံကိုအလျင်အမြန်နားလည်ရန် OB_List_Handlers () ကို သေချာစွာသုံးပါ။
ဇာတ်ညွှန်းသည်မမျှော်လင့်သော output နှောင့်နှေးမှုကိုရှောင်ရှားရန် script ကိုမပြီးခင်ကြားခံသည် flush သို့မဟုတ် သန့်ရှင်း ရေးလုပ်ပါ။
ရှင်းလင်းသောအကြောင်းပြချက်များမရှိဘဲ ob_start () ခေါ်ဆိုမှုများလွန်းခြင်းများကိုရှောင်ကြဉ်ပါ။
သင် 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 များကိုကြည့်ရန်မမေ့ပါနှင့်။