လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP scripts တွင် output cache handlers မျိုးစုံကိုမည်သို့စီမံခန့်ခွဲရမည်နည်း

PHP scripts တွင် output cache handlers မျိုးစုံကိုမည်သို့စီမံခန့်ခွဲရမည်နည်း

gitbox 2025-05-26

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ထုတ်လုပ်မှုကြားခံသည်အလွန်အရေးကြီးသောနည်းပညာဖြစ်သည်။ ၎င်းသည် scripts များကို browser သို့တိုက်ရိုက်ပို့ခြင်းထက် output ကို memory တွင်ယာယီသိုလှောင်ရန်ခွင့်ပြုသည်။ ထို့ကြောင့် developer များမပို့မီ developer များကပြုပြင်မွမ်းမံခြင်း, ob_list_handlers () function သည်ဤလုပ်ငန်းစဉ်တွင် output buffer stack ရှိ handler အားလုံးကိုစောင့်ကြည့်လေ့လာရာတွင်ပါ 0 င်သည်။

PHP scripts တွင် output cache ကိုင်တွယ်သူများစွာကိုစီမံခန့်ခွဲရန် Ob_list_handlers () function ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြပြီးဥပမာအားဖြင့်သူတို့၏အမှန်တကယ်လျှောက်လွှာကိုဥပမာပြပါလိမ့်မည်။

ob_list_handlers ()?

ob_list_handlers () သည် built-in php function တစ်ခုဖြစ်ပြီးလက်ရှိ activated output buffer handlers များစာရင်းတွင်စာရင်းဝင်သော array ကိုပြန်လည်ရောက်ရှိစေသည်။ ob_start ကိုအသုံးပြုပြီး buffer အသစ်တစ်ခုကိုသင်စတင်ခဲ့သည့်အခါတိုင်း,

Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 array ob_list_handlers ( void )

၎င်းသည်မည်သည့် parameters များမလိုအပ်ပါ။ Array တစ်ခုပြန်ပို့သည်။ element တစ်ခုစီသည် output buffer handler ၏အမည်ဖြစ်သည်။

အဘယ်ကြောင့်သင်အဘယ်ကြောင့် output cache ကိုင်တွယ်သူများစွာကိုစီမံခန့်ခွဲရန်လိုအပ်သနည်း။

ရှုပ်ထွေးသော PHP applications များတွင်အထူးသဖြင့် template အင်ဂျင်များ, compressed output များ (ဥပမာ gzip), content filtering or page cache handlers မျိုးစုံမကြာခဏ superimposed ဖြစ်ကြသည်။ စီမံခန့်ခွဲခြင်းမရှိသေးပါက၎င်းသည်အမှားအယွင်းများအမိန့်, ထို့ကြောင့် Buffering လုပ်ငန်းစဉ်များကိုလက်ရှိရရှိထားသည့်အရာများကိုဆက်လက်လုပ်ဆောင်ရန်နှင့်စီမံခန့်ခွဲရန်အရေးကြီးသည်။

အခြေခံဥပမာ - လက်ရှိကြားခံကိုင်တွယ်သူအားလုံးကိုစာရင်းပြုစုပါ

Ob_list_Handlers ကိုအသုံးပြုနည်း () လက်ရှိ activated handlers များကိုစာရင်းပြုစုရန် Ob_list_handlers () ကို မည်သို့အသုံးပြုရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။

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

// ဒုတိယ output ကိုကြားခံစတင်ပါ,calmback function ကိုသတ်မှတ်ပါ
ob_start(function($buffer) {
    return strtoupper($buffer);
});

// အားလုံး output buffer ကိုင်တွယ်စာရင်း
$handlers = ob_list_handlers();

echo "လက်ရှိ output buffer handler စာရင်း:<br>";
foreach ($handlers as $index => $handler) {
    echo ($index + 1) . ". " . htmlspecialchars($handler) . "<br>";
}

// output ကိုစမ်းသပ်
echo "ကျွန်တော်တို့ရဲ့ site ကိုသွားပါ: https://gitbox.net/welcome";

// buffered အကြောင်းအရာပို့ပါ
ob_end_flush();
ob_end_flush();
?>

ဒီဥပမာမှာ -

  • ပထမ ဦး ဆုံး ob_start () ခေါ်ဆိုမှုသည် callback ကိုမဖော်ပြထားပါ။ ပုံမှန်အားဖြင့်လုပ်ငန်းများ၌လုပ်ဆောင်သည်။

  • ဒုတိယ OB_START () output ကိုစာလုံးအကြီးအဖြစ်ပြောင်းလဲစေသော callback function ကိုသတ်မှတ်သည်။

  • Buffer Handlers မှရရှိသော OB_List_Handlers () ကို သုံးပါ။

  • နောက်ဆုံးအနေဖြင့် Buffer အကြောင်းအရာကို ob_end_flush () မှတဆင့် browser ကို browser သို့ပို့သည်။

ရလဒ်ရလဒ်မှာ -

 လက်ရှိ output buffer handler စာရင်း:
1. Closure
2. default output handler
ကျွန်တော်တို့ရဲ့ site ကိုသွားပါ: HTTPS://GITBOX.NET/WELCOME

သင်တွေ့မြင်ရသည့်အတိုင်း output string ကိုလည်းအရင်းအနှီးပြန်ပို့ခြင်းအတွက်ပြောင်းလဲခြင်းကိုအရင်းအနှီးအဖြစ်ပြောင်းလဲသွားသည်။

အဆင့်မြင့်အသုံးပြုမှု - handler အရသိရသည်ကြားခံညှိနှိုင်းမှုညှိ

အချို့ဖြစ်ရပ်များတွင်လက်ရှိကြားခံကိုင်တွယ်သူအမျိုးအစားပေါ် မူတည်. အပြောင်းအလဲအသစ်များကိုဆက်လက်ဆက်လက်မွမ်းမံရန်သို့မဟုတ်အချို့သောမလိုလားအပ်သောကြားခံအလွှာများကိုသန့်ရှင်းရေးလုပ်ရန်သင့်အားဆုံးဖြတ်ရန်လိုကောင်းလိုပေမည်။

ဥပမာအားဖြင့်, စိတ်ကြိုက် compresster handler ကိုရှာဖွေတွေ့ရှိပါက (ထိုကဲ့သို့သော Gzhandler ကဲ့သို့) ကိုရှာဖွေတွေ့ရှိပါကထပ်ဆောင်းချုံ့ခြင်းမရှိပါ။

 <?php
if (!in_array('gzhandler', ob_list_handlers())) {
    ob_start('ob_gzhandler');
    echo "စွမ်းဆောင်နိုင်စေGZIPချုံ့ခြင်း。";
} else {
    echo "GZIP已经စွမ်းဆောင်နိုင်စေ,跳过ချုံ့ခြင်း处理。";
}

echo "<br>အကြောင်းအရာများထပ်မံကြည့်ရှုပါ,ကျေးဇူးပြုပြီးစစ်ဆေးပါ: https://gitbox.net/articles";

ob_end_flush();
?>

၎င်းသည်ထပ်ခါတလဲလဲ compression ကိုစာမျက်နှာခြွင်းချက်များဖြစ်ပေါ်စေခြင်းမှတားဆီးနိုင်သည်။

မှတ်သားရန်အရာ

  • ob_list_handlers ကိုသုံးတဲ့အခါ () , တံခါးပိတ်ကြားခံကိုင်တွယ်သူကိုပြန်မပြန်ပါ,

  • အသိုက် buffers ကိုအသုံးပြုသောအခါ ပထမ ဦး ဆုံးဖွင့်လှစ်သောကြားခံပထမ ဦး ဆုံးအဆုံးသတ် (stack ဖွဲ့စည်းပုံ) ။

  • အကယ်. သင်သည် Buffers ကိုလက်ရှိရရှိထားသည့်အရာနှင့်အကျွမ်းတဝင်မရှိလျှင် ob_clean () Ob_Clush () ကို အလွယ်တကူမသုံးပါနှင့်။

  • မြင့်မားသောဝန်စနစ်များတွင် output buffer control သည်စွမ်းဆောင်ရည်အပေါ်အရေးပါသောသက်ရောက်မှုရှိသည်။

နိဂုံးချုပ်အားဖြင့်

Ob_List_Handlers () developer များသည်လက်ရှိ PHP scripts တွင်တင်ပြသော output buffering handlers များကိုရှင်းလင်းစွာနားလည်နိုင်သည်။ ၎င်းသည်ရှုပ်ထွေးသော application များကို debing လုပ်ခြင်း, စာမျက်နှာ output ကို output လုပ်ခြင်း,

အမှန်တကယ်စီမံကိန်းများတွင်အထူးသဖြင့် cache optimization သို့မဟုတ် output filtering သို့ရောက်သောအခါ Ob_list_Handlers () ကို အသုံးပြုရန်အကောင်းဆုံးအလေ့အကျင့်တစ်ခုဖြစ်သည်။