လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> obsist_handlers မျိုးစုံ output ကို cache ပမာဏအတွက်ဘယ်လိုအသုံးပြုမလဲ

obsist_handlers မျိုးစုံ output ကို cache ပမာဏအတွက်ဘယ်လိုအသုံးပြုမလဲ

gitbox 2025-05-13

PHP တွင် output buffering သည် developer များအနေဖြင့် PHP scripts ၏ရလဒ်များကိုထုတ်လွှင့်ပြီး browser သို့မပို့မီထုတ်လုပ်သူများကိုကြားဖြတ်ရန်ခွင့်ပြုသည့်အလွန်အသုံးဝင်သောယန္တရားတစ်ခုဖြစ်သည်။ သင် rom_start () သင်၏လျှောက်လွှာတွင်ခေါ်ဆိုမှုများအနေဖြင့်ခေါ်ဆိုမှုများစွာကိုခေါ်ဆိုသောအခါ output buffer အဆင့်ကိုဖွဲ့စည်းလိမ့်မည်။ ဤအချိန်၌ဤကြားခံကိုဖြည့်ဆည်းသို့မဟုတ်စီမံခန့်ခွဲရန် OB_List_Handlers () function ကိုအသုံးပြုရန်လိုအပ်သည်။

ဤဆောင်းပါးသည် Ob_list_Handlers ကို အသုံးပြု. လက်ရှိကြားခံ stack ကိုမည်သို့ကြည့်ရှုနိုင်ကြောင်းနှင့် Multi-level output cache ကိုစီမံခန့်ခွဲရန်လက်တွေ့ကျသောနည်းလမ်းများကိုမိတ်ဆက်ပေးလိမ့်မည်။

ob_list_handlers () ?

ob_list_handlers () သည်လက်ရှိသက်ဝင်လှုပ်ရှားသော output buffer processor စာရင်းကိုပြန်လည်ရောက်ရှိသည့် built-in PHP function ဖြစ်သည်။ OB_START () ခေါ်ဆိုမှုတစ်ခုစီသည်ပရိုဆက်ဆာ (Callback သို့မဟုတ် built-in processor ပရိုဆက်ဆာ) ကိုသတ်မှတ်နိုင်သည်။

ဥပမာ -

 <?php
// ပထမ ဦး ဆုံးကြားခံစတင်ပါ
ob_start("ob_gzhandler");

// ဒုတိယကြားခံစတင်ပါ
ob_start();

// တတိယကြားခံစတင်ပါ,Custom Callbacks နှင့်အတူ
ob_start(function($buffer) {
    return str_replace("GitBox", "GitBox.net", $buffer);
});

// လက်ရှိ output buffer processor ကိုကြည့်ပါ
print_r(ob_list_handlers());
?>

ရလဒ်ဥပမာ:

 Array
(
    [0] => Closure
    [1] => default output handler
    [2] => ob_gzhandler
)

output array "နောက်ဆုံးဖွင့်လှစ်ခဲ့သောကြားခံရှေ့မှာ" အမိန့်အတွက်စီစဉ်ထားသည်။

output output ကို buffers စီမံခန့်ခွဲ

ကြားခံမျိုးစုံရှိသည့်အခါ, သင်တစ် ဦး သို့မဟုတ်အားလုံးအဆင့်တိုင်းကိုသန့်ရှင်းရေးလုပ်ချင်ပေမည်။ ဤတွင်အချို့သောအသုံးများသောလုပ်ဆောင်ချက်များမှာ -

  • ob_get_level () - လက်ရှိကြားခံအဆင့်ဆင့်ကိုပြန်ပို့သည်။

  • ob_clean () - လက်ရှိကြားခံကိုရှင်းရှင်းလင်းလင်းဖော်ပြပါ (အကြောင်းအရာ output) ကိုပိတ်ပါ။

  • ob_end_flush () : လက်ရှိကြားခံအကြောင်းအရာ output ကို output ကိုနှင့်ပိတ်ပါ။

  • ob_clean () : လက်ရှိကြားခံအကြောင်းအရာကိုရှင်းလင်းသော်လည်း၎င်းကိုမပိတ်ပါ။

  • ob_flush () - လက်ရှိကြားခံအကြောင်းအရာများကို output လုပ်ပါ။ သို့သော်မပိတ်ပါ။

  • ob_get_clean () - လက်ရှိကြားခံအကြောင်းအရာကိုရယူပါ။

ဥပမာ - ကြားခံအားလုံးကိုရှင်းလင်းပါ

 <?php
// မျိုးစုံကြားခံတုပ
ob_start("ob_gzhandler");
ob_start();
ob_start();

echo "ကျွန်ုပ်တို့၏ဝက်ဘ်ဆိုက်သို့သွားပါ:https://gitbox.net/welcome";

// အားလုံးကြားခံပိတ်ပါ
while (ob_get_level() > 0) {
    ob_end_flush();
}
?>

လျှောက်လွှာဇာတ်လမ်းဥပမာ - Unified စာမျက်နှာ output processing

အချို့သော CMS သို့မဟုတ်မူဘောင်များတွင်သင်သည် template အင်ဂျင်များသို့မဟုတ် debugging ကဲ့သို့သောကွဲပြားခြားနားသော module များရှိကြားခံကိုဖွင့်နိုင်သည်။ Ob_List_Handlers () ကိုအလွှာတစ်ခုစီ၏ပြုပြင်ခြင်းယုတ္တိဗေဒကိုအလွယ်တကူ debug လုပ်ခြင်းသို့မဟုတ် output လုပ်ခြင်း,

 <?php
// သစ်ထုတ်လုပ်ရေးပရိုဆက်ဆာကိုစတင်ပါ
ob_start(function($buffer) {
    file_put_contents("/tmp/gitbox_log.txt", "စာမျက်နှာ output ကိုအရှည်:" . strlen($buffer));
    return $buffer;
});

echo "<h1>အလည်အပတ်ခရီးမှလှိုက်လှဲစွာကြိုဆိုပါသည် GitBox</h1>";
echo "<p>ဝဘ်0င်းက္ပုဒ်စာတမ်း:https://gitbox.net/info</p>";

// အဆုံးနှင့် output ကိုကြားခံ
ob_end_flush();
?>

အကျဉ်းချုပ်

  • ob_list_handlers () သည် Multi-level output cache ကို debing လုပ်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။

  • output buffer stack ၏ဖွဲ့စည်းပုံကိုနားလည်ခြင်းသည်သင့်အား Page output ကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်သို့ရောက်ရှိစေသည်။

  • ရှုပ်ထွေးသော applications များသို့မဟုတ်မူဘောင်များတွင်ဤလုပ်ဆောင်မှုကို Debug Mode တွင်အသုံးပြုရန်အကြံပြုသည်။

ဤ output buffering tools များကိုကောင်းစွာအသုံးပြုပါ။ PHP ၏ output လုပ်ငန်းစဉ်ကိုပိုမိုရှင်းလင်းစွာထိန်းချုပ်နိုင်ပြီးစီမံကိန်းအတွက်ပိုမိုတည်ငြိမ်သော output system တစ်ခုတည်ဆောက်နိုင်သည်။