PHP တွင် output buffering သည် script ၏ output belection ကိုထိန်းချုပ်နိုင်သည့် output buffering သည်အစွမ်းထက်သောအင်္ဂါရပ်တစ်ခုဖြစ်သည်။ အထူးသဖြင့် output buffering သည်အထူးသဖြင့် dynamically ပြုပြင်ပြောင်းလဲမှု, cacput ကို cacheing သို့မဟုတ်ယာယီချေမှုန်းခြင်းသို့မဟုတ်ယာယီချေမှုန်းခြင်းခံရသောအခါအထူးအရေးကြီးသည်။ ob_list_handlers () နှင့် ob_clean) သည် Buffer စီမံခန့်ခွဲမှုတွင်အလွန်လက်တွေ့လုပ်ဆောင်ချက်နှစ်ခုရှိသည်။
ဤဆောင်းပါးသည် OB_List_Handlers () နှင့် buffer အကြောင်းအရာများကိုမည်သို့ရှင်းလင်းရမည်ကိုသရုပ်ပြရန် OB_List_) ၏အခန်းကဏ် role ကိုရှင်းပြပါမည်။
ပုံမှန်အားဖြင့် PHP script ၏ output ကိုကွပ်မျက်ခံရသည့်အခါ browser သို့တိုက်ရိုက်ပို့သည်။ သို့သော် output buffering (ဥပမာ ob_start ) မှတစ်ဆင့် PHP သည်မှတ်ဉာဏ်တွင် output compute ကိုယာယီသိမ်းဆည်းခြင်းအားဖြင့် PHP သည်မှတ်ဥာဏ်ကိုယာယီချမှတ်သည်။
အသုံးများသော buffering လုပ်ဆောင်ချက်များတွင် -
ob_start () - output buffer အသစ်တစ်ခုကိုဖွင့်ပါ
ob_get_contentents () - အကြောင်းအရာကိုကြားခံတွင်ရယူပါ
ob_clean () : ကြားခံရှင်းလင်းနှင့်ကြားခံပိတ်ပါ
ob_clean () : ကြားခံရှင်းလင်းပေမယ့်ကြားခံမပိတ်ပါနှင့်
ob_list_handlers () - လက်ရှိဖွင့်ထားသော Buffer Processor ကိုစာရင်းပြုစုပါ
ob_list_handlers () သည်လက်ရှိဖွင့်ထားသော output buffers နှင့်၎င်းတို့၏သက်ဆိုင်ရာပရိုဆက်ဆာအမည်များအားလုံးပါ 0 င်သောခင်းကျင်းမှုကိုပြန်ပေးရန်အသုံးပြုသည်။ ဒီ function ကိုအထူးသဖြင့်ရှုပ်ထွေးသော Buffer Control Control Control တွင်ရှိသောလက်ရှိကြားခံ stack ၏ status ကို debugging သို့မဟုတ်တရားစီရင်ခြင်းအတွက်အသုံးပြုသည်။
ob_start('ob_gzhandler'); // အသုံးပြုgzipချုံ့ခြင်း
ob_start(); // ပုံမှန်ရိုက်ကူးမှုကိုဖွင့်ပါ
print_r(ob_list_handlers());
output ကိုဖြစ်လိမ့်မည်:
Array
(
[0] => default output handler
[1] => ob_gzhandler
)
ဤပြင်ဆင်မှု၏အမိန့်သည် "ပထမနှင့်ထွက်" (lifro) သည် "and out" ဖြစ်သည်။ ဆိုလိုသည်မှာထိပ်ဆုံးကြားခံသည်ခင်းကျင်းရှေ့တွင်ရှိသည်။
ob_clean () သည် လက်ရှိထိပ်တန်းကြားခံပါအကြောင်းအရာများကိုရှင်းလင်းလိမ့်မည်, သို့သော်ကြားခံကိုမပိတ်ပါ။ HTTP Header သတင်းအချက်အလက်မပို့မီ output မရှိပါ။
ဥပမာအားဖြင့်:
ob_start();
echo "ယာယီ output ကို";
ob_clean(); // ကြားခံရှင်းလင်းပါ“ယာယီ output ကို”
အကယ်. သင်သည် ob_clean ကို မျက်စိကန်းစွာခေါ်ဆိုပါက Multi-Buffer ဇာတ်လမ်းတစ်ပုဒ်တွင်မရှင်းလင်းသင့်သောအကြောင်းအရာများကိုရှင်းလင်းသင့်သည်သို့မဟုတ် compressed / encoding processor ၏ကြားခံကိုရှင်းရှင်းလင်းလင်းမရှင်းလင်းသင့်ပါ။
အကယ်. သင်သည်ပရိုဆက်ဆာမျိုးစုံကိုဖွင့်ထားသည့်ပရိုဆက်ဆာမျိုးစုံ (Gzip compression, compressbacks စသည်) ကိုဖွင့်ပါကရှုပ်ထွေးသော buffering အခြေအနေများတွင်ကြားခံသန့်ရှင်းရေးလုပ်သည့်အခါ ချုံ့သည့်ပရိုဆက်ဆာသို့မဟုတ်အခြားသတ်သတ်မှတ်မှတ်အလွှာများသည်မထိခိုက်ပါ ။ ယခုအချိန်တွင်သင်သည် OB_List_Handlers () ကို အသုံးပြုရန်လိုအပ်သည့်လက်ရှိကြားခံ stack ဖွဲ့စည်းပုံကိုဆုံးဖြတ်ရန်နှင့် ob_clean () Ob_clean () ကိုခေါ်ရန်ဆုံးဖြတ်ရန် OB_List_Handlers () ကို အသုံးပြုရန်လိုအပ်သည်။
ob_start('ob_gzhandler'); // ချုံ့ခြင်း处理器
ob_start(); // ပုံမှန် buffer layer
echo "output အကြောင်းအရာကိုပြင်ဆင်ပါ";
// လက်ရှိ buffer stack ကိုရယူပါ
$handlers = ob_list_handlers();
// အကယ်. အမြင့်ဆုံးအလွှာသည်ပုံမှန်ကြားခံဖြစ်ပါက,ရှင်းလင်းသောအကြောင်းအရာ
if (!empty($handlers) && $handlers[0] === 'default output handler') {
ob_clean();
}
// output ကိုအကြောင်းအရာ
echo "output ကိုသန့်ရှင်းရေး";
// အလှည့်အတွက် buffering ပိတ်ပါ
while (ob_get_level() > 0) {
ob_end_flush();
}
အသုံးပြုသူသည် log in ဝင်. JSON Error တုန့်ပြန်မှုကိုပြန်မရသောအခါသင်ကွပ်မျက်ခြင်းကိုဖျက်သိမ်းရန်လိုအပ်သည့် API interface တစ်ခုတည်ဆောက်ရန်လိုအပ်သည်ဆိုပါစို့။ သို့သော်အချို့သော module များသည်ကြိုတင်ပြင်ဆင်မှုရှိနိုင်သည်။ ဤအချိန်တွင်သင်သည် ob_clean () နှင့် ob_list_handlers () ကို ပေါင်းစပ်နိုင်သည်။
ob_start(); // buffering ဖွင့်
// 某些模块可能提前output ကိုအကြောင်းအရာ
include 'some_module.php'; // ဒီ module တစ်ခုပါဝင်နိုင်သည် echo အသေအချာပေြာဆိုချက်
// ဆီလျှော် output ကိုတက်သန့်ရှင်း
if (in_array('default output handler', ob_list_handlers())) {
ob_clean();
}
// စံသို့ပြန်သွားရန်JSONတုံ့ပြန်ချက်
header('Content-Type: application/json');
echo json_encode([
'status' => 'error',
'message' => 'ကျေးဇူးပြုပြီး system ကိုအရင်ဝင်ပါ。'
]);
ob_end_flush(); // output ကိုပေးပို့ပါ
ဤရွေ့ကားပြောင်းရွှေ့မှုကို JSOSS ကိုမပို့ခင်ကူပန်းဆင်ကိုမပို့ခင်ကာကွယ်မှုကိုတားဆီးပေးပြီးဖောက်သည်ကိုပုံမှန်အားဖြင့်ဖြေရှင်းရန်ပျက်ကွက်စေသည်။
ob_list_handlers () output buffer ပြည်နယ်ကိုလေ့လာခြင်းနှင့် debing လုပ်ရန် အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းကို ob_clean နှင့်ပေါင်းစပ်အသုံးပြုသောအသုံးပြုမှုကိုရှုပ်ထွေးသော Buffer Stack တွင် misclearing content ကိုရှောင်ရှားနိုင်ပြီး output control ၏တိကျမှန်ကန်မှုနှင့်တည်ငြိမ်မှုကိုတိုးတက်စေသည်။
ချုံ့ထားသောရလဒ်များ, အသိုက်ထိုးခြင်းနှင့် modular output ကိုအသုံးပြုခြင်းသည်ဤလုပ်ဆောင်မှုနှစ်ခုကို အသုံးပြု. သင့်အားပိုမိုတည်ငြိမ်။ ထိန်းချုပ်နိုင်သောထုတ်လုပ်မှုမဟာဗျူဟာကိုတည်ဆောက်ရန်အထောက်အကူပြုလိမ့်မည်။ အကယ်. သင့်တွင်ပါဝင်မှု output output output ကိုပါ 0 င်ခြင်းသို့မဟုတ် SEO-Friendly static cache လုပ်ခြင်းစွမ်းရည်လိုအပ်ပါကဤတွင်ဤကြားခံထိန်းချုပ်မှုမဟာဗျူဟာကိုမိတ်ဆက်ရန်အထူးအကြံပြုလိုပါသည်။