PHP Development တွင်ထုတ်လုပ်မှုတွင် output buffering သည် developer များအား output content ကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်ရန်အလွန်အရေးကြီးသောနည်းပညာတစ်ခုဖြစ်သည်။ သို့သော် output buffering ကိုကျွန်ုပ်တို့စီမံခန့်ခွဲသောအခါ ob_list_handlers () နှင့် ob_end_flush () ကိုအသုံးပြုသည်။ အကယ်. ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမလျော်ကန်စွာအသုံးပြုပါကအချို့သောဘုံပြ problems နာများသည်ပေါ်ပေါက်လာနိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်မှုနှစ်ခု၏လုပ်ဆောင်မှုများ, ဘုံပြ problems နာများနှင့်ဖြေရှင်းနည်းများကိုစနစ်တကျမိတ်ဆက်ပေးလိမ့်မည်။
ob_list_handlers () ကိုလက်ရှိ activated output buffer ပရိုဆက်ဆာများအားလုံးကိုစာရင်းပြုစုရန်အသုံးပြုသည်။ ဖန်တီးမှုအနေဖြင့်ခွဲထားသောပရိုဆက်ဆာအမည်များပါ 0 င်သည့် array တစ်ခုသို့ပြန်လည်ရောက်ရှိစေသည်။ ဥပမာအားဖြင့်:
$handlers = ob_list_handlers();
print_r($handlers);
output ကိုဆင်တူသည် -
Array
(
[0] => default output handler
[1] => URL-Rewriter
)
သက်ဆိုင်ရာကြားခံမရှိပါကအချည်းနှီးသောခင်းကျင်းမှုကိုပြန်ပို့သည်။
OB_END_FLUSH () ကို လက်ရှိ output buffer အကြောင်းအရာကို flush လုပ်ရန်အသုံးပြုသည်။ တက်ကြွသောကြားခံမျှမရှိပါကလုပ်ဆောင်ချက်သည်သတိပေးချက်တစ်ခုပေးလိမ့်မည်။
ဥပမာ -
ob_start();
echo "Hello, GitBox!";
ob_end_flush();
Execute ပြီးနောက် "Hello Gitpbox!" ချက်ချင်း browser ကိုပို့လိမ့်မည်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် ob_list_handlers () နှင့် ob_end_flush () ကို ပေါင်းစပ်သောအခါအောက်ပါပြ problems နာများကိုသင်ကြုံတွေ့ရနိုင်သည်။
ob_end_flush () အဘယ်သူမျှမကြားခံမရှိပါကသတိပေးချက်တစ်ခုဖြစ်ပေါ်လိမ့်မည်။
Warning: ob_end_flush(): failed to delete buffer. No buffer to delete
ဘုံအခြေအနေများ:
if (!empty(ob_list_handlers())) {
ob_end_flush();
} else {
// ကြားခံမရှိပါ,မလိုအပ်သောflush
}
ob_end_flush () ကို ကြားခံရှိ, ရှိမရှိစစ်ဆေးခြင်းမပြုဘဲတိုက်ရိုက်ခေါ်ပါကအမှားများပြုလုပ်ရန်လွယ်ကူသည်။
ဖြေရှင်းချက် -
ob_end_flush () ကို မခေါ်မီကြားခံရှိမရှိမရှိစစ်ဆေးပါ။
if (ob_get_level() > 0) {
ob_end_flush();
}
ob_get_level () သည် လက်ရှိကြားခံရှိအလွှာအရေအတွက်ကိုပြန်ပို့လိမ့်မည်။ အကယ်. 0 ထက်ကြီးလျှင်၎င်းသည်ကြားခံတစ်ခုရှိသည်ဟုဆိုလိုသည်။
ရှုပ်ထွေးသော application များ၌မူဘောင်များသို့မဟုတ်တတိယပါတီစာကြည့်တိုက်များအသုံးပြုသောအခါကဲ့သို့သောရှုပ်ထွေးသောအပလီကေးရှင်းများတွင်ကြားခံအလွှာများစွာရှိသည်။ အကယ်. သင်သည် OB_END_FLUSH () ဟုခေါ်ဆိုပါကလက်ရှိအလွှာကိုသာလုပ်ဆောင်နိုင်သည်။ ကျန်ရှိသောကြားခံသည်ထိုတွင်ရှိနေသေးသည်။
ဥပမာ -
while (ob_get_level() > 0) {
ob_end_flush();
}
၎င်းသည် output buffer အားလုံးကိုအလွှာမှပိတ်ထားသောအလွှာများကိုအလွှာဖြင့်ပိတ်ထားရန်ခွင့်ပြုသည်။
အချို့သော output buffer များသည်အထူးပရိုဆက်ဆာများ (ဥပမာ Gzip compression or url rewriting ကဲ့သို့သောအထူးပရိုဆက်ဆာများနှင့်ချည်နှောင်ထားနိုင်သည်။ ဤကြားခံဖြင့်ဤကြားခံကိုအဆုံးသတ်ရန်အတင်းအဓမ္မအဂတိလိုက်စားမှုသည်ညစ်ညမ်းသော 0 က်ဘ်စာမျက်နှာများ, အကြောင်းအရာ - encoding အမှားများစသည်တို့ကိုပျက်စီးစေနိုင်သည်။
၎င်းကိုကြွေးရှင်းကိုမည်သို့ကိုင်တွယ်ရမည်နည်း။
ob_list_handlers မှတဆင့် buffer type ကိုစစ်ဆေးပါ () ဘေးကင်းစွာကိုင်တွယ်နိုင်သည့်ကြားခံများကိုသာပိတ်ပါ။ ဥပမာ Gzip_Handler ကဲ့သို့သော buffers များကိုပိတ်ပါ။
$handlers = ob_list_handlers();
foreach ($handlers as $handler) {
if ($handler === 'default output handler') {
ob_end_flush();
}
}
၎င်းသည်အခြား output ယုတ္တိဗေဒကိုမတော်တဆချိုးဖောက်ခြင်း၏အန္တရာယ်ကိုလျော့နည်းစေသည်။
Ob_list_handlers () နှင့် ob_end_flush () ကိုပေါင်းစပ်ထားသောလုံခြုံသောစစ်ဆင်ရေးကြားခံတစ်ခု၏ပြည့်စုံသောဥပမာတစ်ခုမှာ -
// output buffer စတင်ပါ
ob_start();
// output ကိုအကြောင်းအရာ
echo "ကျွန်တော်တို့ရဲ့ site ကိုသွားပါ:https://gitbox.net/welcome";
// ကြားခံကိုစစ်ဆေးပြီးလုံခြုံစွာပိတ်ပါ
$handlers = ob_list_handlers();
if (!empty($handlers)) {
foreach ($handlers as $handler) {
if ($handler === 'default output handler') {
ob_end_flush();
}
}
}
ဤဥပမာတွင် default output processor အတွက်ကြားခံတစ်ခုအတွက်ကြားခံတစ်ခုရှိပါကအခြားစနစ်များကသတ်မှတ်ထားသည့်ကြားခံသည်မပျက်စီးစေနိုင်သော်လည်း၎င်းကိုဖွင့်ပါ။
PHP တွင် OB_List_Handlers () သည် ob_end_flush () obfend_flush () ကို အသုံးပြု. အသုံးပြု. လက်ရှိ ob_list_handlers () သည်လက်ရှိ obsist_handlers အခြေအနေကိုနားလည်နိုင်သည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမှန်ကန်စွာကိုက်ညီရန်အလွန်အရေးကြီးသည်, သို့မဟုတ်ပါကသတိပေးချက်များ, စာမျက်နှာခြွင်းချက်များနှင့်ယုတ္တိအမှားများကိုဖြစ်စေရန်လွယ်ကူသည်။
သတိရဖို့သေချာပါစေ:
Buffer သည် OB_END_FLUSH () မတိုင်မီတည်ရှိကြောင်းအတည်ပြုပါ။
Multi-Layer Buffering ကိုကိုင်တွယ်သောအခါသတိထားပါ။
သူတို့ကိုယ်သူတို့မထိန်းချုပ်သော output buffer များကိုမဖျက်ဆီးပါနှင့်။
ဤလုပ်ဆောင်မှုနှစ်ခု၏အသုံးပြုမှုကိုကျွမ်းကျင်မှုသည်သင်၏ PHP စီမံကိန်းကိုပိုမိုခိုင်မာသည့်နှင့် output ကိုစီမံခန့်ခွဲမှုတွင်ပိုမိုခိုင်မာသည့်နှင့်ယုံကြည်စိတ်ချရနိုင်သည်။