PHP ၏ output control ယန္တရားတွင် ob_list_handlers () နှင့် ob_end_clean) တွင်ဘုံသို့သော်နှစ်မျိုးဖြစ်သည်။ သူတို့၏ကွဲပြားခြားနားမှုများကိုနားလည်ခြင်းနှင့်မှန်ကန်သောအသုံးပြုမှုဆိုင်ရာဖြစ်ရပ်များကိုနားလည်ခြင်းသည် Code Execution လုပ်ငန်းစဉ်ကိုပိုမိုကောင်းမွန်စေရန်နှင့် output အမှားများကိုရှောင်ရှားရန်အထူးအရေးကြီးသည်။
ob_list_handlers () သည်လက်ရှိ activated output buffer ပရိုဆက်ဆာများအားလုံး၏အမည်များစာရင်းကိုပြန်လည်ပေးအပ်သော query function တစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည်မည်သည့် output buffer ပါဝင်မှုကိုမဆိုပြုပြင်မွမ်းမံခြင်း မဟုတ်သော်လည်း လက်ရှိကြားခံ stack state ကိုသာကြည့်ရှုရန်သာအသုံးပြုသည်။
သဒ္ဒါ:
$handlers = ob_list_handlers();
print_r($handlers);
ဥပမာသို့ပြန်သွားရန်:
Array
(
[0] => default output handler
)
ob_start () Ob_list_handlers () နှင့်အတူ cache ကိုအကြိမ်ပေါင်းများစွာအစပြုခြင်းကဲ့သို့သော multi-layer multi-layer buffering ကို enable လျှင်, ဘုံပရိုဆက်ဆာများသည် Gzip Handler , MB__UtPutler စသည်တို့ပါဝင်သည်။
သက်ဆိုင်သည့်အခြေအနေများ:
cache ယန္တရားကို debug;
သတ်သတ်မှတ်မှတ် cache ပရိုဆက်ဆာအချို့ရှိမရှိဆုံးဖြတ်ရန်,
ရှုပ်ထွေးသောပရိုဂရမ်များတွင်ကြားခံကိုလွဲမှားခြင်းကိုရှောင်ကြဉ်ပါ။
dynamically dynamical cache processor ကိုပိတ်ထားအဖြစ် output ကိုအပြုအမူကိုချိန်ညှိ။
ဥပမာ application: system တစ်ခုစီကိုယူဆခြင်း Gzip outputput copput ကိုဖွင့်ထားတာကိုယူဆတယ်, အဲဒါကိုအောက်ပါကုဒ်ကရှာဖွေနိုင်ပါတယ်။
if (in_array('gzip handler', ob_list_handlers())) {
echo "လက်ရှိဖွင့်ထားတယ် Gzip output compression!";
}
အကယ်. သင်သည် https://www.gitbox.net/api/stream ကဲ့သို့ output stream api ကို debugging နှင့် debugging လုပ်နေပါကဤရှာဖွေတွေ့ရှိမှုသည်အထူးသဖြင့်အချက်အလက်များထုတ်လွှင့်ခြင်းနှင့် 0 င်ရောက်စွက်ဖက်ခြင်းမှဖြစ်ပေါ်လာခြင်းကိုတားဆီးရန်အထူးအသုံးဝင်သည်။
OB_END_CLEAN () သည် လက်ရှိအခြေအနေအရှိဆုံးသောကြားခံကိုရပ်စဲပြီး Buffer ရှိ contents များကိုရှင်းလင်းသော ခွဲစိတ်ကုသမှုလုပ်ငန်းလည်ပတ်မှုတစ်ခုဖြစ်သည်။ ဒီ function ကိုခေါ်ပြီးနောက် Buffer ရှိ contents များကို browser သို့မဟုတ် client သို့မပို့ပါ။
သဒ္ဒါ:
ob_end_clean();
မှတ်စုများ
တက်ကြွသော output buffer မရှိပါက OB_END_CLEAN () ကိုခေါ်ဆိုခြင်းသည်သတိပေးချက်တစ်ခုဖြစ်ပေါ်လိမ့်မည်။
ထိပ်ဆုံးမှအမြင့်ဆုံးသော ကြားခံကြားကြားမှုကိုသာရှင်းရှင်းလင်းလင်းဖော်ပြပါမည်။
သက်ဆိုင်သည့်အခြေအနေများ:
ဖိုင်ဒေါင်းလုပ်များကိုထုတ်လုပ်သည့်အခါမတော်တဆ output invention ကိုတားဆီးခြင်း (ဥပမာ CSV, Zip),
System Information Informage ယိုစိမ့်မှု (အမှားများ, သတင်းအချက်အလက်များကို debugging),
Response output application content ကို dynamically ကိုထိန်းချုပ်ပြီးအသုံးမ 0 င်သော cache ကိုရှင်းလင်းပါ။
နမူနာလျှောက်လွှာ -
// output ကို cache ကိုစတင်ပါ
ob_start();
echo "output မဖြစ်သင့်တဲ့သတင်းအချက်အလက်အချို့ debugging...";
// cache ကိုရှင်းပြီးပိတ်ပါ
ob_end_clean();
// မှန်ကန်သောဒေတာကိုပို့ပါ
header('Content-Type: application/json');
echo json_encode(['status' => 'success']);
အကယ်. သင်သည် https://www.gitbox.net/ext/export/csv နှင့်ဆင်တူသော interface တစ်ခုတည်ဆောက်နေပါကမလိုအပ်သောပါဝင်မှု output မရှိစေရန်အလွန်အရေးကြီးသည်။ ob_clean () download လုပ်ထားသောဖိုင်အကြောင်းအရာသည်စင်ကြယ်ပြီးအမှားအယွင်းများကိုသေချာစေရန်သေချာစေနိုင်သည်။
အကြံအစည် | ob_list_handlers () | ob_clean () |
---|---|---|
လုပ်ဆောင်ချက် | လက်ရှိ output buffer processor စာရင်းကိုမေးမြန်းပါ | လက်ရှိ output buffer ကိုအဆုံးသတ်နှင့်ရှင်းလင်းပါ |
အဆိုပါ buffer အကြောင်းအရာပြုပြင်ရန်ရှိမရှိ | မဟုတ် | ဟုတ်ကဲ့ (ရှင်းလင်းသောအကြောင်းအရာ) |
ဘုံအသုံးပြုမှုအခြေအနေများ | buffer အဆင့်ဆင့် debugging နှင့်စစ်ဆေး | ဖိုင်ကူးယူခြင်း, ရှင်းလင်းသောအမှား output ကို |
သတိပေးလိမ့်မည် | မဟုတ် | ဟုတ်ကဲ့ (ကြားခံမရှိပါက) |
ob_list_handlers ():
သင် cache status ကိုနားလည်ရန် လိုအပ်သည့်အခါ,
သိုလှောင်ထားသည့်အကြောင်းအရာများလုံခြုံမှုရှိ ,
ရှုပ်ထွေးသော Cache Stack (ထိုကဲ့သို့သောအသိုက် cache, gzip compression စသဖြင့်) ကိုင်တွယ်။
ob_clean () ကိုသုံးပါ။
မဆီလျော်သောရလဒ်များအားလုံးသည် output ကိုသန့်ရှင်းစေရန်သေချာစေရန်ရှင်းလင်းရန်လိုအပ်သည် ။
API interface ကို ရေးဆွဲပြီး ဖိုင်များကိုဖိုင်များကူးယူ သည့်အခါ,
ပရိုဂရမ်ခြွင်းချက်ကိုင်တွယ်စဉ်အတွင်းသတင်းအချက်အလက်များကို debugging ၏ယိုစိမ့်မှုကိုတားဆီးပါ။
ဘုံအလေ့အကျင့်တစ်ခုမှာ ob_list_handlers များမှ Buffer Status ကို ပထမဆုံးအတည်ပြုရန်ဖြစ်သည်။
ဥပမာ - နှစ် ဦး စလုံးကိုတစ်ချိန်တည်းတွင်အသုံးပြုရန်အတွက်အကြံဥာဏ်များ
// အမည်မသိ Buffer Interference ကိုမရှိသလောက်သေချာပါစေ
while (ob_get_level() > 0) {
ob_end_clean();
}
// တရားဝင် output ကိုစတင်ပါ
header('Content-Type: application/json');
echo json_encode(['status' => 'clean_output']);
ဤလုပ်ဆောင်မှုမှတစ်ဆင့်သင်၏ system တွင် gzip buffers နှင့် template buffers များရှိရင်တောင် output content သည်သန့်ရှင်းပြီးယုံကြည်စိတ်ချရသောဖြစ်သည်။ ဥပမာအားဖြင့်တုန့်ပြန်မှုအကြောင်းအရာများကိုတင်းကြပ်စွာထိန်းချုပ်ရန်လိုအပ်သော interface တစ်ခုတွင် ၎င်းသည်အထူးအရေးကြီးသည်။
ob_list_handlers () နှင့် ob_lean) တစ်ခုချင်းစီသည်မတူညီသောတာဝန်ဝတ္တရားများ - တစ်ခုစီသည်ကင်းထောက်တစ် ဦး ဖြစ်ပြီးအခြားတစ်ခုမှာသန့်ရှင်းရေးဖြစ်သည်။ သူတို့ကိုအသုံးပြုခြင်းကိုဆင်ခြင်ခြင်းသည်အစီအစဉ်၏ကြံ့ခိုင်မှုကိုတိုးတက်စေရုံသာမက cache output မှဖြစ်ပေါ်သောပြ problems နာများကိုလည်းသိသိသာသာလျှော့ချနိုင်ပြီး application တည်ငြိမ်မှုနှင့်သုံးစွဲသူအတွေ့အကြုံများကိုတိုးတက်စေသည်။