PHP Development တွင်ကျွန်ုပ်တို့သည်၎င်းကိုမကြာခဏအသုံးပြုသည်, စာမျက်နှာတင်ခြင်းမြန်နှုန်းကိုတိုးတက်စေရန်, မလိုအပ်သော output ကိုလျှော့ချရန်နှင့် cache control ကိုတိုးမြှင့်ခြင်းများကိုလျှော့ချရန်ကျွန်ုပ်တို့မကြာခဏအသုံးပြုသည်။ သို့သော် developer များစွာသည် ob_start () နှင့် ob_get_contents () နှင့် ရင်းနှီးကျွမ်းဝင်သည်။ စွမ်းဆောင်ရည်ညှိခြင်း, ob_list_handlers () သည်အမှန်တကယ်အသုံးပြုနေသော output buffer processor ကိုနားလည်ပြီးထိန်းချုပ်နိုင်သည့်အလွန်အမင်းထိုးထွင်းသိမြင်နိုင်သောကိရိယာတစ်ခုဖြစ်သည်။
Ob_list_Handlers () သည် PHP မှ PHP မှပေးသော function တစ်ခုဖြစ်ပြီးလက်ရှိ activated output buffer processors အားလုံး၏အမည်များကိုပြန်ပို့ရန်ဖြစ်သည်။ output buffer processor သည် Gzip compression, cache control ကဲ့သို့သော output ကိုအချက်အလက်များကိုလုပ်ဆောင်နိုင်သည့် callback function ဖြစ်သည်။
print_r(ob_list_handlers());
အောက်ပါအတိုင်း output ကိုဖြစ်လိမ့်မည်:
Array
(
[0] => default output handler
[1] => ob_gzhandler
)
ဆိုလိုသည်မှာလောလောဆယ်တွင်သင်၌ပရိုဆက်ဆာနှစ်ခုဖွင့်ထားသည့်အတွက် Ob_gzhandler သည် Gzip compression အတွက်အသုံးပြုသောပရိုဆက်ဆာဖြစ်သည်။
တစ်ခါတစ်ရံမူဘောင်များ, plugins များသို့မဟုတ်စိတ်ကြိုက်ကုဒ်များကိုမတော်တဆကျော်လွှားနိုင်သည့် OB_START () s နှင့်ဤကြားခံအလွှာများသည်ပုံတူကူးယူခြင်းသို့မဟုတ်ပ conflict ိပက်ခများဖြစ်ပေါ်စေနိုင်သည်။ ob_list_handlers () သင် enabled processor များအားလုံးကိုလျင်မြန်စွာစာရင်းပြုစုပြီးမလိုအပ်သောကြားခံ stacking ကိုစစ်ဆေးနိုင်သည်။
if (in_array('ob_gzhandler', ob_list_handlers())) {
// ထပ်ခါတလဲလဲဖြည့်စွက်ခြင်းကိုရှောင်ပါ gzip ပရိုဆဲှသူ
ob_end_clean(); // သို့မဟုတ် ob_end_flush();
}
အချို့သောကြီးမားသောစနစ်များ (ဥပမာ CMS သို့မဟုတ် Custom MVC Frameworks ကဲ့သို့) တွင် output content များသည်များသောအားဖြင့် outputed ပြုပြင်ခြင်း, ပျောက်ဆုံးခြင်း, ob_list_handlers () ပြ problem နာ၏ရင်းမြစ်ကိုလျင်မြန်စွာရှာဖွေရန်ကူညီပေးသည့်ပရိုဆက်ဆာများထည့်သွင်းထားကြောင်းသင်ရှင်းရှင်းလင်းလင်းသိနိုင်သည်။
foreach (ob_list_handlers() as $handler) {
error_log("Active output buffer: $handler");
}
output buffer processor ကိုကွပ်မျက်ခံရသည့်အမိန့်သည်စွမ်းဆောင်ရည်နှင့်နောက်ဆုံးပေါ်ထွက်ရှိမှုရလဒ်များကိုသက်ရောက်မှုရှိသည်။ အချို့သော processor များ (ထိုကဲ့သို့သော Gzip Compression) ကဲ့သို့လုပ်ပါ။ ob_list_handlers မှပြန်လာသောအမှာစာကိုကြည့်ခြင်းအားဖြင့် () , ကြားခံအလွှာကိုကျိုးကြောင်းဆီလျော်စွာစီစဉ်နိုင်သည်။
ဥပမာအားဖြင့်:
ob_start('sanitize_output'); // သန့်ရှင်းရေးလုပ်သည်HTML
ob_start('ob_gzhandler'); // နောက်ဆုံးgzipချုံ့ခြင်း
output ကိုအမှာစာမမှန်ကန်ပါက၎င်းသည်ချုံ့ခြင်းပျက်ကွက်ခြင်းသို့မဟုတ် HTML formato malfunction ဖြစ်စေနိုင်သည်။
အချို့သောကြားခံပရိုဆက်ဆာများသည်အပိုဆောင်း HTML မှတ်ချက်များ, debug အချက်အလက်သို့မဟုတ်စာရင်းအင်းဆိုင်ရာ scripts များထည့်သွင်းနိုင်သည်။ အကယ်. သင်သည်စာမျက်နှာရလဒ်ကို (Redis (သို့) ဖိုင်များသို့စာရေးခြင်းကဲ့သို့သော) ကိုသိမ်းဆည်းလိုပါက OB_List_Handlers () ကို အသုံးပြုရန်အတွက်ဤပရိုဆက်ဆာများကိုသန့်ရှင်းရေးလုပ်ရန်လိုသည်ကိုစစ်ဆေးရန်အတွက်အလွန်လိုအပ်သည်။
$handlers = ob_list_handlers();
if (in_array('debug_toolbar_output', $handlers)) {
ob_end_clean(); // သန့်ရှင်းရေးလုပ်သည်调试信息
}
Buffer Processor အချက်အလက်များကို output လုပ်ရန် OB_List_Handlers () ကို အသုံးပြု. ရိုးရိုး logging function ကိုဖန်တီးနိုင်သည်။
function log_output_buffers() {
$handlers = ob_list_handlers();
file_put_contents('/var/log/php_output_buffers.log', print_r($handlers, true));
}
ဤနည်းအားဖြင့်ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်နှေးကွေးသော 0 န်ထုပ် 0 င်မှုသို့မဟုတ်ရိုးရာကျောက်တုံးများပါ 0 င်သည့်အခါပြ problem နာ၏ရင်းမြစ်ကိုနားလည်ရန်မှတ်တမ်းကိုသင်လျင်မြန်စွာကြည့်ရှုနိုင်သည်။
if (!in_array('ob_gzhandler', ob_list_handlers())) {
ob_start('ob_gzhandler');
}
ob_start(); // အဓိက output ကိုကြားခံ
$pageContent = generatePage(); // ဤသည်စာမျက်နှာမျိုးဆက် function ကိုယူဆ
// cache ကိုသိမ်းဆည်းပါ
file_put_contents('/tmp/cache.html', $pageContent);
// ထုတ်လုပ်မှုစာမျက်နှာ
echo $pageContent;
ob_end_flush();
ob_list_handlers () သည်ကြိမ်နှုန်းမြင့်မားခြင်းမဟုတ်ပါ, သင်ကတဆင့်သင်လုပ်နိုင်သည်:
သင့်လျော်သော compression ကိုဖွင့်ထားသည့် (ထိုကဲ့သို့သော GZIP) ရှိမရှိစစ်ဆေးပါ။
မလိုအပ်သော output ပရိုဆက်ဆာများကြောင့်ဖြစ်ပေါ်လာသောစွမ်းဆောင်ရည်ပြ problems နာများကိုရှောင်ပါ
output လုပ်ငန်းစဉ်များအတွက်စနစ်၏ထိန်းချုပ်မှုတိုးတက်အောင်
လျင်မြန်စွာ output ကိုပုံမှန်မဟုတ်သောနေရာချထား
နောက်တစ်ခါသင်မသိသော output သို့မဟုတ်စွမ်းဆောင်ရည်မြှ င့ ်တင်မှုများကိုရင်ဆိုင်နေရသည်။
အကယ်. သင်သည် https://gitbox.net/api/pi/v1/data ကဲ့သို့သောစွမ်းဆောင်ရည်မြင့်ဝက်ဘ်ဝန်ဆောင်မှုကိုတီထွင်နေပါကသင်သည် output process ကိုပိုမိုသတိပြုသင့်သည်။ OB_List_Handlers ၏ဆင်ခြင်တုံတရားအသုံးပြုခြင်း () သည်အရည်အသွေးမြင့် Backend ဖွံ့ဖြိုးတိုးတက်မှုအတွက်အဓိကခြေလှမ်းတစ်ခုဖြစ်သည်။