လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> array_column ၏ cache cache မဟာဗျူဟာကိုထပ်ခါတလဲလဲဖြတ်သန်းခြင်းကိုရှောင်ပါ

array_column ၏ cache cache မဟာဗျူဟာကိုထပ်ခါတလဲလဲဖြတ်သန်းခြင်းကိုရှောင်ပါ

M66 2025-05-11

PHP တွင် array_column function ကိုများသောအားဖြင့်ရှုထောင့်အမျိုးမျိုးမှကော်လံတစ်ခုမှအချက်အလက်များကိုထုတ်ယူရန်အသုံးပြုသည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင် array_column ကို အသုံးပြုခြင်းသည်စွမ်းဆောင်ရည်ပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။ ဤပြ problem နာအတွက်သော့ချက်မှာ array_colum သည် မူရင်းခင်းကျင်းမှုကိုအကြိမ်ကြိမ်ဖြတ်သန်းသွားလိမ့်မည်ဖြစ်သည်။ အကယ်. ကျွန်ုပ်တို့သည်ရလဒ်များကိုမသိမ်းဆည်းပါကထပ်ခါတလဲလဲဖြတ်သန်းသွားသောဖြတ်သန်းမှုနှင့်မလိုအပ်သောစွမ်းဆောင်ရည်စားသုံးမှုဆီသို့ ဦး တည်သွားစေနိုင်သည်။ ဤဆောင်းပါးသည် cache p မူဝါဒများမှတစ်ဆင့် array_colnum ကို အသုံးပြုသောအခါထပ်ခါတလဲလဲပြင်ဆင်ခြင်းကိုမည်သို့ရှောင်ရှားရမည်ကိုလေ့လာလိမ့်မည်။

ပြ problem နာ၏ရင်းမြစ်: ထပ်ခါတလဲလဲဖြတ်သန်း

အောက်ပါနမူနာကုဒ်ကိုသုံးသပ်ကြည့်ပါ။

 $array = [
    ['id' => 1, 'name' => 'Alice', 'age' => 25],
    ['id' => 2, 'name' => 'Bob', 'age' => 30],
    ['id' => 3, 'name' => 'Charlie', 'age' => 35]
];

$names = array_column($array, 'name');

ဤဥပမာတွင် array_column သည် တစ်ချိန်က ဒေါ်လာ array ခင်းကျင်းမှုနှင့်တစ်ဖက်စီတွင်ဖြ ည့ ်ဆည်းပေးမည်။ ဤစစ်ဆင်ရေးသည်အထူးစျေးကြီးသော်လည်းကွဲပြားခြားနားသောကော်လံများနှင့်အကြိမ်ပေါင်းများစွာထုတ်ယူရန်လိုအပ်ပါကသို့မဟုတ်ခင်းကျင်းမှုကြီးမားစွာဖြင့်ထပ်ခါတလဲလဲ array_colnum ကို သုံးပါ။

ဖြေရှင်းချက် - ထပ်ခါတလဲလဲဖြတ်သန်းခြင်းကိုရှောင်ရှားရန် cache ကိုသုံးပါ

ထပ်ခါတလဲလဲဖြတ်သန်းခြင်းကိုရှောင်ရှားရန်, ကော်လံတစ်ခု၏ပထမ ဦး ဆုံးအကြိမ်ထုတ်ယူသောအခါရလဒ်ကို cache ထဲသိုလှောင်ထားနိုင်သည်။ နောက်တစ်ကြိမ်တွင်တူညီသောကော်လံလိုအပ်ပါသည်, ၎င်းသည် array_column ခေါ်ဆိုခြင်းမရှိဘဲတိုက်ရိုက်ဖတ်ပါ။

ရိုးရှင်းသော cache arrays ကိုအသုံးပြုခြင်း

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

 // cache ခင်း array ကိုအစပြုပါ
$cache = [];

function getColumnFromCache($array, $column, &$cache) {
    // ကော်လံသည် cache ထဲတွင်ပြီးသားရှိမရှိစစ်ဆေးပါ
    if (!isset($cache[$column])) {
        // ကော်လံ cache ထဲမှာမဟုတ်ပါဘူးလျှင်,အသုံးပြု array_column ဒေတာကိုရယူပါ,နှင့်ရလဒ်များကို cache
        $cache[$column] = array_column($array, $column);
    }
    return $cache[$column];
}

$array = [
    ['id' => 1, 'name' => 'Alice', 'age' => 25],
    ['id' => 2, 'name' => 'Bob', 'age' => 30],
    ['id' => 3, 'name' => 'Charlie', 'age' => 35]
];

// cache မှရယူပါ 'name' စာရင်း
$names = getColumnFromCache($array, 'name', $cache);
print_r($names);

// 再次cache မှရယူပါ 'name' စာရင်း,ထပ်ခါတလဲလဲဖြတ်သန်းရှောင်ကြဉ်ပါ
$namesAgain = getColumnFromCache($array, 'name', $cache);
print_r($namesAgain);

ဤဥပမာတွင် GetCoNumfromtcache function သည်ကော်လံတစ်ခုအတွက်ဒေတာများကို $ cache array တွင်သိမ်းဆည်းထားခြင်းရှိမရှိစစ်ဆေးသည်။ ဒေတာများကိုသိမ်းဆည်းထားပြီးပါကသိမ်းဆည်းထားသောရလဒ်ကိုတိုက်ရိုက်ပြန်လည်ရောက်ရှိလိမ့်မည်။ ဒီလိုမှမဟုတ်ရင် array_colum ကို ကော်လံဒေတာကိုရယူပြီး cache ထဲမှာသိမ်းထားဖို့လို့ခေါ်တယ်။

ပိုမိုရှုပ်ထွေးသော Cachemet အစီအစဉ်များကိုသုံးပါ (ဥပမာ - Redis သို့မဟုတ် Memcached ကဲ့သို့)

အကယ်. သင်၏လျှောက်လွှာသည်ကြီးမားပြီးတောင်းဆိုမှုများမှတူညီသောဒေတာကော်လံများကိုမကြာခဏထုတ်ယူရန်လိုအပ်ပါက Redis သို့မဟုတ် Memcach ကဲ့သို့သောပိုမိုထိရောက်သော cachemes များကိုအသုံးပြုခြင်းကိုစဉ်းစားပါ။

ဥပမာအားဖြင့်, Redis ကို cache coleck data ကိုအသုံးပြုသောကုဒ်သည်ဤကဲ့သို့ဖြစ်နိုင်သည်။

 $redis = new Redis();
$redis->connect('127.0.0.1', 6379);

function getColumnFromRedis($array, $column, $redis) {
    // စစ်ဆေးကြည့်ရှု Redis 中是否已缓存该စာရင်း
    $cachedColumn = $redis->get($column);
    if ($cachedColumn === false) {
        // လှျင် Redis 中没有缓存该စာရင်း,အသုံးပြု array_column ဒေတာကိုရယူပါ
        $cachedColumn = json_encode(array_column($array, $column));
        // ရလဒ်ကိုသိမ်းဆည်းပါ Redis
        $redis->set($column, $cachedColumn);
    }
    return json_decode($cachedColumn, true);
}

// နမူနာဒေတာ
$array = [
    ['id' => 1, 'name' => 'Alice', 'age' => 25],
    ['id' => 2, 'name' => 'Bob', 'age' => 30],
    ['id' => 3, 'name' => 'Charlie', 'age' => 35]
];

// ရယူ 'name' စာရင်း
$names = getColumnFromRedis($array, 'name', $redis);
print_r($names);

Redis မှတစ်ဆင့် Cached ကော်လံအချက်အလက်များသည်ဤနည်းဖြင့်ထပ်ခါတလဲလဲပြုလုပ်နိုင်သည့်အချက်အလက်များကိုအထူးသဖြင့်မကြာခဏလက်လှမ်းမီသောအခြေအနေများအတွက်ထပ်ခါတလဲလဲလုပ်ဆောင်မှုများကိုများစွာလျှော့ချနိုင်သည်။

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

cacraing ပေါ်လစီကိုအသုံးပြုခြင်းအားဖြင့် array_colum ကို အသုံးပြုသည့်အခါတူညီသောအချက်အလက်များနှင့်တူညီသောအချက်အလက်များစွာဖြင့်ဖြတ်သန်းသွားသောလမ်းကြောင်းများစွာကိုထိထိရောက်ရောက်ရှောင်ရှားနိုင်ပြီးစွမ်းဆောင်ရည်တိုးတက်အောင်ပြုလုပ်နိုင်သည်။ သေးငယ်တဲ့ applications များအတွက်, ရိုးရိုး memory cache ကို (ဥပမာ Array ကဲ့သို့) ကိုသုံးရန်လုံလောက်သည်; ကြီးမားသော applications များအတွက် perficress သို့မဟုတ် memcached ကဲ့သို့သော cache စနစ်များကိုစွမ်းဆောင်ရည်နှင့်အနိုင်မရသောစွမ်းရည်ကိုပိုမိုတိုးတက်စေရန်အသုံးပြုနိုင်သည်။ မှန်ကန်သောသိုလှောင်ခြင်းအစီအစဉ်ကိုရွေးချယ်ခြင်းသည်အထူးသဖြင့်အချက်အလက်အမြောက်အများကိုပြုပြင်သည့်အခါအစီအစဉ်၏စွမ်းဆောင်ရည်ကိုအလွန်ကောင်းမွန်စေသည်။