PHP တွင် output buffering သည် developer များအား script output ၏အချိန်နှင့်အမှာစာများကိုထိန်းချုပ်ရန်ခွင့်ပြုသည့်အလွန်လက်တွေ့အင်္ဂါရပ်တစ်ခုဖြစ်သည်။ ပုံမှန်အားဖြင့် PHP ၏ output ကို client ကိုချက်ချင်းပို့သည်, output buffering ကိုဖွင့်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဤရလဒ်များကို server memory တွင်ပထမဆုံးအကြိမ်သိမ်းဆည်းထားပြီး,
ရှုပ်ထွေးသော cache control သို့မဟုတ် Multi-layer buffering logic နှင့်ဆက်ဆံရာတွင်၎င်းသည် ob_list_handlers () function ကိုအသုံးပြုခြင်းကိုနားလည်ရန်နှင့်ကျွမ်းကျင်ရန်အရေးကြီးသည်။ ဤဆောင်းပါးသည် Ob_list_Handlers ကို မည်သို့အသုံးပြုရမည်ကိုရှင်းပြရန်ဥပမာအားဖြင့် output buffer များကိုပိုမိုထိထိရောက်ရောက်ကိုင်တွယ်ဖြေရှင်းရမည်,
ob_list_handlers () သည်လက်ရှိ activated output buffer ပရိုဆက်ဆာများအားလုံး၏အမည်ကိုရရှိသော function တစ်ခုဖြစ်သည်။ ၎င်း၏ Return Value သည် stack order (နောက်ဆုံးပေါ်နောက်ဆုံးပေါ်) တွင်လက်ရှိကြားခံပရိုဆက်ဆာများကိုစာရင်းပြုစုထားသည့် array တစ်ခုဖြစ်သည်။
array ob_list_handlers ( void )
output buffer သည် PHP တွင် stack stack ဖွဲ့စည်းပုံတစ်ခုအဖြစ်တည်ရှိသည်။ Ob_start () ကိုခေါ်သည့်အခါတိုင်း Processor အသစ်တစ်ခုကို Stark ၏ထိပ်တွင်ထည့်သွင်းလိမ့်မည်။
အဓိပ်ပါယျမှာ:
Processor ၏အလွှာတစ်ခုစီသည်၎င်းကိုလက်ခံရရှိသည့်အရာကိုပြုပြင်နိုင်သည်။
နောက်ဆုံးတွင်အနိမ့်ဆုံးကြားခံအကြောင်းအရာများကိုဖောက်သည်သို့မဟုတ်အခြား ဦး တည်ရာသို့ပို့လိမ့်မည်။
ဥပမာအားဖြင့်:
ob_start('strtoupper'); // တတိယထပ်:အကြောင်းအရာများကိုအရင်းအနှီးသို့ပြောင်းပါ
ob_start('trim'); // ဒုတိယထပ်:အစနှင့်အဆုံးကွက်လပ်များကိုဖယ်ရှားပါ
ob_start(); // ပထမထပ်:မူရင်းအကြောင်းအရာ
ယခုအချိန်တွင် OB_List_Handlers () သည် အောက်ပါအကြောင်းအရာများကိုပြန်ပေးလိမ့်မည်။
Array
(
[0] => default output handler
[1] => trim
[2] => strtoupper
)
Gzip compression, HTML compression and custom သစ်ထုတ်လုပ်ခြင်းကိုပေါင်းစပ်ထားသောစာမျက်နှာ cache system ကိုသင်တီထွင်နေသည်ဆိုပါစို့။ အောက်ပါကြားခံကွင်းဆက်ကိုသင်အသုံးပြုနိုင်သည်ဆိုပါစို့။
ob_start('ob_gzhandler'); // အထပ်1:GZIPချုံ့ခြင်း
ob_start('custom_html_minify'); // အထပ်2:HTMLချုံ့ခြင်း
ob_start('log_output'); // အထပ်3:သစ်ခုတ်
ဤပရိုဆက်ဆာများကိုဖြေရှင်းရန်သို့မဟုတ်လုပ်ဆောင်နေစဉ်အတွင်း buffer stack ၏ဖွဲ့စည်းပုံကိုဆုံးဖြတ်ရန် OB_List_Handlers () ကိုသုံးနိုင်သည်။
$handlers = ob_list_handlers();
foreach ($handlers as $handler) {
if ($handler === 'log_output') {
ob_end_flush(); // သို့မဟုတ် ob_end_clean(),စီးပွားရေးလိုအပ်ချက်အပေါ်မူတည်သည်
}
}
၎င်းသည်မှတ်တမ်းအကြောင်းအရာများကိုမှတ်တမ်းတင်ခြင်းသို့မဟုတ်အချို့သောအခြေအနေများအောက်တွင် logging ကိုပိတ်ခြင်းကိုရှောင်ရှားသည်။
အောက်ဖော်ပြပါဥပမာသည်အမှန်တကယ်ဇာတ်လမ်းနှင့်ပိုမိုနီးကပ်သောဥပမာတစ်ခုဖြစ်သည်။
// စာမျက်နှာ cache ကိုယုတ္တိဗေဒ
function cache_page_output($buffer) {
$cache_file = '/tmp/page_' . md5($_SERVER['REQUEST_URI']) . '.html';
file_put_contents($cache_file, $buffer);
return $buffer;
}
// 注册输出缓冲အထပ်
ob_start('ob_gzhandler'); // GZIPချုံ့ခြင်း
ob_start('cache_page_output'); // ဖိုင်မှ cache
ob_start(); // မူရင်း output ကို
echo "<html><body>အလည်အပတ်ခရီးမှလှိုက်လှဲစွာကြိုဆိုပါသည် <a href=\"https://gitbox.net/\">GitBox</a></body></html>";
// လက်ရှိ Buffer Processor ကိုကြည့်ပါ
print_r(ob_list_handlers());
output ကိုဆင်တူသည် -
Array
(
[0] => default output handler
[1] => cache_page_output
[2] => ob_gzhandler
)
ဤအချိန်တွင်ကျွန်ုပ်တို့သည် cache ကိုယာယီခုန်ကျော်သွားသကဲ့သို့လိုအပ်သည့်ကြားခံအလွှာတစ်ခုကိုပြုလုပ်နိုင်သည်။
if ($_GET['nocache'] ?? false) {
ob_end_flush(); // အပြီးသတ် cache_page_output 这一အထပ်
}
Buffering ယန္တရားကိုအစဉ်အမြဲနားလည်ပါ။ Stacks အစဉ်အလာတွင်အမြဲတမ်းနားလည်ပါ။
ob_list_handlers () ကို အသုံးပြုခြင်း () ကြားခံအလွှာကို debging လုပ်သည့်အခါအကြီးအအကူအညီများကိုအသုံးပြုနိုင်သည်။
ကြားခံအားလုံးကိုလုံးဝသန့်ရှင်းရေးလုပ်ရန် (ob_get_level ()) ob_end_level ()) ကိုသင်အသုံးပြုနိုင်သည်။ ။
output buffer အားလုံးသည်ကိုယ်တိုင် (သို့မဟုတ် end_flush ()) သို့မဟုတ် end_flush ()) ကို လက်ဖြင့်ပြုလုပ်ရမည်ကိုမမေ့ပါနှင့်။ ဇာတ်ညွှန်းမစခင်အကြောင်းအရာကိုမပို့နိုင်ပါ။
ရှုပ်ထွေးသော Cache Control Control STRASS () Ob_list_Handlers () သည် PHP output buffer layer အတွက် Visual Support ကို Visual Support ကိုထောက်ပံ့ပေးသည်။ ob_start () နှင့် ob_end_flush () ကဲ့သို့သောလုပ်ဆောင်ချက်များကိုပေါင်းစပ်ခြင်း, သိုလှောင်ခြင်း, သစ်ထုတ်လုပ်ခြင်း, filtering စသည်ဖြင့်ပြုလုပ်နိုင်သည်။
output buffering ယန္တရားနှင့် ob_list_handlers များ () ကို အသုံးပြု. (), အထူးသဖြင့်ရေနစ်သညင်းအခြေခံတည်ဆောက်ပုံကိုတည်ဆောက်သည့်အခါပိုမိုထိရောက်သော,