PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် output buffering ယန္တရား (output buffering) သည်အလွန်လက်တွေ့လုပ်ဆောင်ချက်ဖြစ်သည်။ developer များက developer များကိုမှတ်ဉာဏ်ထဲတွင်အကြောင်းအရာများကိုယာယီသိမ်းဆည်းရန်ခွင့်ပြုရန်ခွင့်ပြုသည်။ Template Rendering, Page compression သို့မဟုတ် output control ကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါ output ကိုကြားခံသည်အထူးအရေးကြီးသည်။
ဤဆောင်းပါးသည်လက်ရှိကြားခံအခြေအနေကိုကြည့်ရှုရန် Ob_list_Handlers () function ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်, ob_end_flush နှင့်ပေါင်းစပ်။
PHP ၏ output buffering သည်သင့်အားဖောက်သည်ထံသို့ output ကို "နှောင့်နှေး" ခွင့်ပြုသည်။ များသောအားဖြင့် echo , print , printf စသည်ဖြင့် output function များကို အသုံးပြု. အကြောင်းအရာများကို client သို့တိုက်ရိုက်ပို့ပေးပါလိမ့်မည်, သို့သော် buffering ကိုဖွင့်ထားလိမ့်မည်။
output ထုတ်ဖော်ပြောကြားရန်နည်းလမ်းအချို့ -
ob_start(); // ပုံမှန်ရိုက်ကူးမှုကိုဖွင့်ပါ
Callback functions များကိုလည်းကူးယူနိုင်သည်သို့မဟုတ် GZIP နှင့်အခြားအထူးအပြောင်းအလဲများပြုလုပ်နိုင်သည်။
ob_start('ob_gzhandler'); // ဖွင့်လှစ် gzip compression buffering
ob_list_handlers () function ကို) function ကိုလက်ရှိဖွင့်ထားသော output output buffer processor (handlers) အားလုံးကိုကြည့်ရှုရန်အသုံးပြုနိုင်သည်။ ရှုပ်ထွေးသော output လုပ်ငန်းစဉ်များကို debugging လုပ်သည့်အခါ၎င်းသည်အလွန်အသုံးဝင်သည်။
ob_start(); // ပုံမှန်ရိုက်ကူးခြင်း
ob_start('ob_gzhandler'); // ကြားခံ၏ဒုတိယအလွှာ,အသုံးပြု gzip
print_r(ob_list_handlers());
Array
(
[0] => ob_gzhandler
[1] => default output handler
)
မှတ်စု: ဤစာရင်းသည် "ပထမနှင့်အပြင်" (stack stack stack) ဖြစ်သည်။ ဆိုလိုသည်မှာနောက်ဆုံးဖွင့်ထားသောကြားခံကိုပထမ ဦး စွာလုပ်ဆောင်သည်။
ob_end_flush () ကို "လက်ရှိကြားခံနှင့်အကြောင်းအရာကိုထုတ်ယူခြင်းနှင့်ထုတ်လွှင့်မှုကိုအဆုံးသတ်ရန်" အသုံးပြုသည်။ ၎င်းသည်အပြင်ဘက် buffer (i.e. ကိုဖွင့်ထားသည့်နောက်ဆုံးတစ်ခု) ကိုအဆုံးသတ်နိုင်သည်။
ob_start(); // default buffer
ob_start('ob_gzhandler'); // gzip buffer
echo "Hello, Gitbox!";
// လက်ရှိ buffer stack ကိုကြည့်ပါ
print_r(ob_list_handlers());
// အပြီးသတ် gzip Buffer နှင့် output အကြောင်းအရာ
ob_end_flush();
// ကျန်ရှိသောကြားခံကိုကြည့်ပါ
print_r(ob_list_handlers());
// 再အပြီးသတ် default ကြားခံနှင့် output ကို
ob_end_flush();
Buffer Layer ကိုအလွှာအားဖြင့်ရှင်းလင်းရန်ဤနည်းသည်မျှော်လင့်ထားသည့်အမိန့်နှင့်ပုံစံတွင်ပါဝင်မှုကိုသေချာစေသည်။
Template Rendering System
ယူနီဖောင်းအစားထိုးခြင်းသို့မဟုတ်စည်းဝေးပွဲပြုလုပ်ရန် Buffer Capting Template Fradmate output ကိုသုံးပါ။
စာမျက်နှာချုံ့ခြင်းနှင့် cache
gzip compression ကိုအကောင်အထည်ဖော်ရန် OB_GZHandler ကို သုံးပါ။
သို့မဟုတ် Custom Handler, ထိုကဲ့သို့သောအပိုနေရာများသို့မဟုတ်လိုင်းချိုးဖောက်ခြင်းကဲ့သို့သော custom handler ။
Debug output ကိုအမိန့်
ob_list_handlers () (), ကြားခံအလွှာအလွှာကိုပိတ်ရန်မေ့နေသည်မရှိမရှိကိုသင်လျင်မြန်စွာခွဲခြားသိမြင်နိုင်သည်။
function compress_output($buffer) {
// ရိုးရှင်းသောချုံ့ခြင်း:လိုင်းချိုးနှင့်အပိုနေရာများကိုဖယ်ရှားပါ
$buffer = preg_replace('/\s+/', ' ', $buffer);
return $buffer;
}
ob_start('compress_output');
echo "<html>\n";
echo " <body> \n";
echo " Welcome to Gitbox.net! \n";
echo " </body>\n";
echo "</html>";
ob_end_flush();
output ကို lightweight HTML စာမျက်နှာများကိုထုတ်လုပ်ရန်သင့်တော်သောလိုင်းတစ်ခုတည်းသို့ချုံ့လိမ့်မည်။
ob_list_handlers () , OB_END_FLUSH () ၏အကူအညီဖြင့်ပိုမိုတိကျပြီးအလွှာထွက်ပေါ်လာသောထိန်းချုပ်မှုကိုရရှိရန်အတွက် output content ကိုလိုအပ်သလိုဖြန့်ချိနိုင်သည်။ ဤလုပ်ဆောင်မှုနှစ်ခုကိုပေါင်းစပ်ခြင်းက output ကိုယုတ္တိဗေဒနှင့်ဆက်ဆံရာတွင်သင့်ကို ပို. အဆင်ပြေစေနိုင်သည်။
သင်၏ကိုယ်ပိုင်ပုံစံအင်ဂျင်ကိုတည်ဆောက်ခြင်း, SEO optimization လုပ်ခြင်းသို့မဟုတ်တုန့်ပြန်မှုချုံ့ခြင်းနှင့် cache ကိုအကောင်အထည်ဖော်ခြင်း,