PHP တွင် output buffering (OUB) ယန္တရားသည် developer များအား scripts များ၏ output ကိုထိန်းချုပ်ရန်ခွင့်ပြုသည်။ ob_list_handlers () သည်လက်ရှိ activated output buffer ပရိုဆက်ဆာများကိုစာရင်းပြုစုထားသည့်အရေးကြီးသော debugging function ဖြစ်သည်။ ဆင်ခြင်တုံတရား၏ခေါ်ဆိုမှုအမိန့်ကိုစီမံခြင်း output cache ကိုအထူးသဖြင့်ရှုပ်ထွေးသော Template သို့မဟုတ် Contents compression တွင်ပါ 0 င်သည့်စီမံကိန်းများအတွက်အထူးအရေးကြီးသည်။
Ob_List_Handlers () ကို အသုံးပြုသောအခါ output cache ခေါ်ဆိုမှုအမိန့်ကိုမည်သို့ကောင်းမွန်စွာစီမံခန့်ခွဲရမည်ကိုအသေးစိတ်ဖော်ပြရန်ဤဆောင်းပါးသည်အသေးစိတ်ဖော်ပြချက်ကိုအသေးစိတ်ဖော်ပြထားသည်။
ob_list_handlers () function ကို) function သည်လက်ရှိတက်ကြွသော output output buffer ပရိုဆက်ဆာများ (Handlers) အားလုံးစာရင်းပြုစုထားသည်။ ဥပမာအားဖြင့်:
<?php
ob_start('ob_gzhandler');
ob_start();
print_r(ob_list_handlers());
?>
output ကိုဆင်တူသည် -
Array
(
[0] => default output handler
[1] => ob_gzhandler
)
မှတ်ချက် - output order သည် stack stack stack stack stack stack stack stack stack ဖြစ်သည်။ ဖွင့်လှစ်ခဲ့သည့်နောက်ဆုံးကြားခံသည်အပြောင်းအလဲနဲ့လုပ်ဆောင်ရန်ပထမဆုံးဖြစ်သည်။
output cache ကိုမလျော်ကန်စွာအသုံးပြုပါက၎င်းသည်ရလဒ်ဖြစ်နိုင်သည်။
နောက်ဆုံး output ကိုထိခိုက်သောမမှန်ကန်သော compression အမိန့်
OB_END_FLUSH () OB_CLEAN () ကိုခေါ်သည့်အခါပိတ်ထားသောကြားခံကိုပိတ်ထားသည်။
စာမျက်နှာ output သည်အထူးသဖြင့် JSON API, HTML နှင့်အခြားအခြေအနေများကိုကိုင်တွယ်ရာတွင်ဖြစ်သည်
ထိုကဲ့သို့သောအထိခိုက်မခံတဲ့ဒေတာများ၏ buffer ယိုစိမ့်အဖြစ်လုံခြုံရေးထိခိုက်မှု
ထို့ကြောင့်ကြားခံတစ်ခုစီ၏အခြေအနေနှင့်အမိန့်ကိုနားလည်ရန်အလွန်အရေးကြီးသည်။
ဤတွင်အချို့သောလက်တွေ့ကျသောစီမံခန့်ခွဲမှုဆိုင်ရာအကြံပြုချက်များကိုဤတွင်ဖော်ပြထားသည်။
Output Buffer အသစ်ကိုမဖွင့်မီ၎င်း၏ရည်ရွယ်ချက်ကိုရှင်းလင်းပါ။ ဥပမာအားဖြင့်:
ပထမဆုံးအလွှာကို Gzip Compression ( OB_GZHandler ) အတွက်အသုံးပြုသည်။
ဒုတိယအလွှာကို HTML အကြောင်းအရာ compression အတွက်အသုံးပြုသည်
တတိယအလွှာသည် output sequence ကိုကိုယ်တိုင်ထိန်းချုပ်ရန်ဖြစ်သည်
နမူနာကုဒ်:
<?php
// output ကိုချုံ့ရန်အသုံးပြုခဲ့သည်
ob_start('ob_gzhandler');
// အတွက်HTMLချုံ့ခြင်း
ob_start(function ($buffer) {
// ရိုးရှင်းသောဖယ်ရှားရေးHTMLအတွက်အပိုအာကာသ
return preg_replace('/\s+/', ' ', $buffer);
});
// ပုံမှန် buffering,အတွက်收集页面内容
ob_start();
// လက်ရှိ Buffer စာရင်းကိုပုံနှိပ်ပါ
print_r(ob_list_handlers());
?>
ထိပ်ဖျား: ဝက်ဘ်ဆိုက်ကို gitbox.net domain name အောက်တွင်တပ်ဆင်ထားပါက၎င်းကိုဥပမာ Buffer ရှိ URLs များအတွက်လုပ်ငန်းများ၌ပြုလုပ်နိုင်သည်။
<?php
ob_start(function($content) {
return str_replace('http://example.com', 'https://gitbox.net', $content);
});
?>
ဤနည်းအားဖြင့်မည်သည့်ဒိုမိန်းအမည်ကိုမူလကထုတ်ယူခြင်းကိုမူလကဖော်ပြပါစေ, ၎င်းကိုမှန်ကန်သော gitbox.net ဖြင့်အလိုအလျောက်အစားထိုးနိုင်သည်။
Buffer Stack သည်ပုံမှန်ဖြစ်ကြောင်းသေချာစေရန်သင် ob_list_handlers () ကိုခေါ်ဆိုနိုင်သည်။
<?php
function check_output_buffer() {
$handlers = ob_list_handlers();
if (empty($handlers)) {
throw new Exception('အဘယ်သူမျှမ output buffer ပရိုဆက်ဆာကိုရှာတွေ့,ကျေးဇူးပြု။ ကျသင့်ငွေတွက်ပေးပါ ob_start() တယ်လီဖုန်းဆက်ခြင်း。');
}
}
ob_get_level () လက်ရှိ output buffer ၏အသိုက်အဆင့်ကိုပြန်ပို့သည်
ob_get_status () ကြားခံအားလုံး၏အသေးစိတ်အချက်အလက်များကိုပြန်ပို့သည်
ဥပမာ -
<?php
echo 'လက်ရှိ output ကိုကြားခံအဆင့်:' . ob_get_level();
$status = ob_get_status(true);
foreach ($status as $item) {
echo 'ပရိုဆဲှသူ:' . $item['name'] . PHP_EOL;
}
?>
၎င်းသည်သင့်အား Layer တစ်ခုစီ၏ပရိုဆက်ဆာနှင့်ပြည်နယ်ကိုရှင်းရှင်းလင်းလင်းမြင်နိုင်ရန်ခွင့်ပြုသည်။
buffering ကို script အဆုံးတွင်ပြောင်းပြန်နိုင်ရန်အတွက်ပိတ်ရန်အကြံပြုသည် -
<?php
while (ob_get_level() > 0) {
ob_end_flush();
}
?>
မှတ်ချက် - OB_END_FLUSH () သို့မဟုတ် ob_clean) ကိုအလယ်၌မခေါ်ပါနှင့်။
Ob_List_Handlers () နှင့် output buffering အမိန့်ကိုမှန်ကန်စွာစီမံပါ။
ကြားခံတစ်ခုချင်းစီ၏အလွှာတစ်ခု၏ရည်ရွယ်ချက်ကိုခွဲခြားသတ်မှတ်ပါ
dynamicy buffer stack status ကို dynamicy စောင့်ကြည့်
အချိန်အတွက်လုပ်ငန်းစဉ်နှင့်အနီးကပ်ကြားခံ
Portals နှင့် Saas ပလက်ဖောင်းများကဲ့သို့သောရှုပ်ထွေးသောစီမံကိန်းများတွင် ( GitBox.net သို့နေရာချထားမှုများပြုလုပ်သော applications) ကဲ့သို့သောကောင်းမွန်သော output buffering စီမံခန့်ခွဲမှုသည်စာမျက်နှာစွမ်းဆောင်ရည်နှင့်စနစ်တည်ငြိမ်မှုကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
ဤအကြံပြုချက်များကိုအသုံးပြုခြင်းသည်သင်၏ PHP စီမံကိန်းကိုအားကောင်းစေနိုင်သည်။