PHP applications များကိုတီထွင်သောအခါအထူးသဖြင့်ဒေတာဘေ့စ်လုပ်ငန်းများပါ 0 င်သောစီမံကိန်းများတွင်ဒေတာဘေ့စ်မေးမြန်းချက်များ၏စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန်အလွန်အရေးကြီးသည်။ MySQLi_Result သည် MySQL ၏စုံစမ်းမှု၏ရလဒ်များကိုကိုင်တွယ်ရန် PHP တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်, သို့သော်အချို့သောကိစ္စရပ်များတွင်ကျွန်ုပ်တို့သည်တူညီသောဒေတာဘေ့စ်စုံစမ်းမှုကိုအကြိမ်ကြိမ်လုပ်ဆောင်သည်။ ထပ်ခါတလဲလဲမေးမြန်းခြင်းများကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည်ဤမေးမြန်းချက်များကိုပိုမိုကောင်းမွန်စေရန် static cache နည်းစနစ်များကိုသုံးနိုင်သည်။ ဤဆောင်းပါးသည်မလိုအပ်သောဒေတာဘေ့စ်ဝင်ရောက်ခွင့်ကိုလျှော့ချရန် MySQLI_RESURT function ကိုပိုမိုကောင်းမွန်စေရန် static cache ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
Static cache သည် server ၏မှတ်ဉာဏ်တွင်ရှာဖွေမှုရလဒ်များကိုသိမ်းဆည်းရန်ရည်ညွှန်းသည်။ တူညီသောဒေတာတောင်းဆိုမှုထပ်မံဖြစ်ပွားသောအခါဒေတာဘေ့စ်စုံစမ်းမှုကိုပြန်လည်စတင်မည့်အစား cache မှအချက်အလက်များကိုတိုက်ရိုက်ပြန်လည်ရယူသည်။ ဤချဉ်းကပ်မှုသည်စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
ကျွန်ုပ်တို့တွင်ရိုးရှင်းသော MySQL Query တစ်ခုရှိသည်ဆိုပါစို့။
<?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "user", "password", "database");
// ဒေတာဘေ့စ်ကိုမေးမြန်းပါ
$query = "SELECT * FROM users WHERE id = 1";
$result = $mysqli->query($query);
// လုပ်ငန်းစဉ်မေးမြန်းချက်ရလဒ်များ
if ($result) {
$row = $result->fetch_assoc();
echo "User Name: " . $row['name'];
}
?>
ဤကိစ္စတွင်, ဤမေးမြန်းမှုကွပ်မျက်ခံရတိုင်းဒေတာဗေ့စ်ကိုဝင်ရောက်ကြည့်ရှုနိုင်ပြီးအလားတူမေးမြန်းမှုကိုကွပ်မျက်ခံရသည်။ ဤလုပ်ငန်းစဉ်ကိုပိုမိုကောင်းမွန်စေရန်ပထမမေးခွန်းကိုနောက်ဆက်တွဲမေးခွန်းများဖြင့်အချက်အလက်များကိုနောက်တစ်ကြိမ်ထပ်မံတောင်းခံမည့်အစားအချက်အလက်များကို cache မှတိုက်ရိုက်သိမ်းဆည်းနိုင်သည်။
PHP တွင် static cache ကိုအကောင်အထည်ဖော်ရန်လွယ်ကူသောနည်းလမ်းတစ်ခုရှိသည်။ ၎င်းသည် static variable များကိုအသုံးပြုရန်ဖြစ်သည်။ တည်ငြိမ်သော variable များသည် function calls များအကြားသူတို့၏တန်ဖိုးများကိုထိန်းသိမ်းထားပြီးမေးမြန်းမှုကိုရလဒ်များအကြားသိမ်းဆည်းထားနိုင်သည်။ အထက်ပါကုဒ်ကို static cache ကိုအသုံးပြုရန်မည်သို့ပြင်ဆင်ရမည်နည်း။
<?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "user", "password", "database");
// cache query query ကိုရလဒ်များအတွက် static variable ကိုသတ်မှတ်ပါ
function getUserById($id) {
static $cache = [];
// အသုံးပြုသူ၏စုံစမ်းမှုရလဒ်များသည် cache ထဲတွင်ရှိပြီးသားဖြစ်ပါက,Carded ဒေတာကိုတိုက်ရိုက်ပြန်ပို့ပါ
if (isset($cache[$id])) {
return $cache[$id];
}
// cache မရှိပါက,ဒေတာဘေ့စ်စုံစမ်းမှုလုပ်ဆောင်ပါ
global $mysqli;
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
// အဆိုပါ query ကိုအောင်မြင်သောလျှင်,cache ကိုသိမ်းဆည်းပါ
if ($result) {
$row = $result->fetch_assoc();
$cache[$id] = $row; // cache ကိုသိမ်းဆည်းပါ
return $row;
}
return null;
}
// cache နှင့်အတူအသုံးပြုသူ query query
$user = getUserById(1);
if ($user) {
echo "User Name: " . $user['name'];
}
?>
အထက်ပါကုဒ်တွင် GetuserBerbyID လုပ်ဆောင်မှုသည်စုံစမ်းမှုရလဒ်များကိုသိုလှောင်ရန် status variable ကို $ cache ကို အသုံးပြုသည်။ အသုံးပြုသူတစ် ဦး သည်ပထမဆုံးအကြိမ်မေးမြန်းသောအခါရလဒ်ကို $ cache ခင်း array တွင်သိမ်းဆည်းထားလိမ့်မည်။ ထို့နောက်အသုံးပြုသူတူညီသောကိုထပ်မံမေးမြန်းသောအခါ၎င်းကို $ cache မှတိုက်ရိုက်ပြန်လည်ရယူပြီးဒေတာဘေ့စ်ကိုမသုံးတော့ပါ။
တည်ငြိမ်သော variable များသည်ရိုးရှင်းသော cache များအတွက်အလွန်ထိရောက်သော်လည်း, ရှုပ်ထွေးသော applications များအတွက် Redis သို့မဟုတ် Memis ကဲ့သို့သောသီးခြား cache စာကြည့်တိုက်ကိုအသုံးပြုရန်သို့မဟုတ်တောင်းဆိုမှုများအတွက် cache ကိုမျှဝေရန်လိုသည်။ ဤ cache systems များသည်ဖြန့်ဝေထားသော cache,
<?php
// ဖန်တီး Redis ဆက်
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "user", "password", "database");
function getUserById($id) {
global $redis, $mysqli;
// စစ်ဆေးကြည့်ရှု Redis အဲဒီမှာ cacheed ဒေတာရှိပါသလား
$cachedData = $redis->get("user_{$id}");
if ($cachedData) {
return unserialize($cachedData); // cache မှဒေတာရယူပါ
}
// cache မရှိပါက,ဒေတာဘေ့စ်စုံစမ်းမှုလုပ်ဆောင်ပါ
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
// အဆိုပါ query ကိုအောင်မြင်သောလျှင်,ကယ်ဆယ် Redis သိုကာတာ
if ($result) {
$row = $result->fetch_assoc();
$redis->set("user_{$id}", serialize($row), 3600); // သိုကာတာ1နာရီ
return $row;
}
return null;
}
// cache နှင့်အတူအသုံးပြုသူ query query
$user = getUserById(1);
if ($user) {
echo "User Name: " . $user['name'];
}
?>
အထက်ပါကုဒ်တွင် Redis ကို cache သိုလှောင်မှုအဖြစ်အသုံးပြုသည်။ ဒေတာဘေ့စ်ကိုရှာဖွေခြင်းသည် Redis တွင်သိုလှောင်ထားသည့်အချက်အလက်များတည်ရှိပါကသိမ်းဆည်းထားသောရလဒ်ကိုတိုက်ရိုက်ပြန်လည်ရောက်ရှိလိမ့်မည်။ ဒီလိုမှမဟုတ်ရင်ဒေတာဘေ့စ်စုံစမ်းမှုကိုကွပ်မျက်ခံရလိမ့်မယ်။ ရလဒ်များကို Redis တွင်သိမ်းဆည်းထားလိမ့်မည်။
cache နှင့်အတူအရေးကြီးသောအရေးအသားတစ်ခုမှာ cache ပျက်ကွက်ခြင်းသို့မဟုတ် update ကိုဆိုလိုသည်။ ဒေတာဘေ့စ်၏အချက်အလက်များရှိအချက်အလက်များသည် cache ထဲရှိဒေတာများကိုညှိနှိုင်းရန်သို့မဟုတ်ထပ်တူပြုခြင်းကိုရှင်းလင်းရန်လိုအပ်သည်။ ဘုံနည်းဗျူဟာများမှာ -
အချိန်မီ Update Update Cache - cache ကိုပုံမှန်ရှင်းလင်းပြီးဒေတာဘေ့စ်ကို update cache ကိုပြန်လည်ရှာဖွေပါ။
Cache ကိုကိုယ်တိုင်လက်ဖြင့် Update လုပ်ပါ ။ ဒေတာအပြောင်းအလဲများကိုပြောင်းလဲသည့်အခါ, သက်ဆိုင်ရာ cache ကိုကိုယ်တိုင်ရှင်းလင်းပါသို့မဟုတ် cache ကို update လုပ်ပါ။
Static cache သို့မဟုတ် cache စာကြည့်တိုက်များကို redis သို့မဟုတ် memcached ကဲ့သို့သောစာသင်ခန်းများကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ထပ်ခါတလဲလဲဒေတာဘေ့စ်မေးမြန်းချက်များကိုထပ်မံအကောင်အထည်ဖော်နိုင်ပြီးကျွန်ုပ်တို့၏လျှောက်လွှာ၏စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်အောင်လုပ်နိုင်သည်။ Cache ကိုအကောင်အထည်ဖော်သောအခါ cache ပျက်ကွက်မှုမဟာဗျူဟာသည်အချက်အလက်များ၏တိကျမှန်ကန်မှုနှင့်ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်စဉ်းစားရန်လိုအပ်သည်။ MySQLI_RESULT ၏လုပ်ဆောင်မှုကိုအသေးစိတ်ရှာဖွေခြင်းကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန်မည်သို့ပိုမိုကောင်းမွန်အောင်နားလည်နိုင်သည်ကိုပိုမိုနားလည်သဘောပေါက်ရန်ဤဆောင်းပါးသည်သင့်ကိုပိုမိုနားလည်ရန်ကူညီနိုင်သည်ဟုမျှော်လင့်ပါ။