MySQL extension သည် MySQL databases များကိုစီမံရန် PHP ကိုအသုံးပြုသောအခါအလွန်အသုံးများသောကိရိယာတစ်ခုဖြစ်သည်။ တစ်ခါတစ်ရံတွင်လက်ရှိဆက်သွယ်မှုမှအသုံးပြုသောဇာတ်ကောင်သတ်မှတ်ချက်ကိုရရှိရန်အတွက် $ MySQLI-> Get_charset () Get_charset () ကိုခေါ်ရန်လိုအပ်သည်။
Get_charet () သည်ဒေတာဘေ့စ်ကိုမေးမြန်းခြင်းအဖြစ်အချိန်ကုန်သွားသော်လည်း၎င်းကိုမကြာခဏကြိမ်နှုန်းတောင်းဆိုမှုများသို့မဟုတ်ကွင်းဆက်များတွင်မကြာခဏဟုခေါ်သော်ငြားမလိုအပ်သော overhead ကိုယူဆောင်လာနိုင်သည်။ စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန် Get_charset ၏ရလဒ်ကိုထပ်မံခေါ်ဆိုမှုများကိုရှောင်ရှားရန် Cache ကိုစဉ်းစားနိုင်သည်။
MySQLI :: Get_charset () function ၏ရလဒ်များကိုသိမ်းဆည်းခြင်းဖြင့်ဒေတာဘေ့စ်လုပ်ငန်း၏စွမ်းဆောင်ရည်ကိုမည်သို့တိုးတက်အောင်လုပ်ရမည်ကိုဤဆောင်းပါးကရှင်းပြပါမည်။
MySQLI :: Get_charset () function သည် charset , collation , comment စသည့်လက်ရှိဆက်သွယ်မှုမှအသုံးပြုသောဇာတ်ကောင်အချက်အလက်များပါ 0 င်သည့်အရာဝတ်ထုတစ်ခုကိုပြန်ပို့သည်။
ဥပမာအားဖြင့်:
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
$charsetInfo = $mysqli->get_charset();
echo $charsetInfo->charset; // output ကို e.g.:utf8mb4
ကိစ္စရပ်အများစုတွင်ကျွန်ုပ်တို့သည်၎င်းကိုအချိန်တိုင်းဟုခေါ်ရန်မလိုအပ်ပါ။ အကြောင်းမှာ connection ကိုထူထောင်ပြီးနောက်ဇာတ်ကောင်အစုံသည်များသောအားဖြင့်မပြောင်းလဲပါ။
ရှုပ်ထွေးသော application များတွင်အထူးသဖြင့်ကြီးမားသောတစ်ကမ္ဘာလုံးဆိုင်ရာဘောင်များသို့မဟုတ်မြင့်မားသောတစ်ပြိုင်နက်တည်းဖြစ်စဉ်များတွင် code သည် data_charet () တွင်ပါ 0 င်သည်။
ရိုးရှင်းသော cache (e.g. static variable တွေကိုနှင့်အတူ) နှင့်အတူ (e.g. ဖြင့်ကမ္ဘာလုံးဆိုင်ရာ variable တွေကိုနှင့်အတူ) နှင့်အတူဤအချက်အလက်များကိုတစ်ကြိမ်သာရယူပြီး virts lifecycle တစ်လျှောက်လုံးပြန်လည်အသုံးပြုနိုင်သည်။
ဤတွင်ရိုးရှင်းသောအကောင်အထည်ဖော်မှုဖြေရှင်းချက်ဖြစ်သည်။
class DatabaseConnection {
private $mysqli;
private $charsetInfo = null;
public function __construct($host, $user, $password, $database) {
$this->mysqli = new mysqli($host, $user, $password, $database);
if ($this->mysqli->connect_error) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ:' . $this->mysqli->connect_error);
}
}
public function getCharsetInfo() {
if ($this->charsetInfo === null) {
$this->charsetInfo = $this->mysqli->get_charset();
}
return $this->charsetInfo;
}
public function query($sql) {
return $this->mysqli->query($sql);
}
public function close() {
$this->mysqli->close();
}
}
// အသုံးပြုမှုဥပမာ
$db = new DatabaseConnection('localhost', 'user', 'password', 'database');
// ပထမခေါ်ဆိုမှု,လုပ်ဆောင်လိမ့်မည် get_charset()
$charset = $db->getCharsetInfo();
echo 'လက်ရှိဇာတ်ကောင်အစုံ:' . $charset->charset . '<br>';
// နောက်ဆက်တွဲခေါ်ဆိုမှုများ,cacheed တန်ဖိုးများကိုတိုက်ရိုက်သုံးပါ
$charsetAgain = $db->getCharsetInfo();
echo 'ဇာတ်ကောင်ကိုထပ်ထည့်ပါ(သိုကာတာ):' . $charsetAgain->charset . '<br>';
// အခြားမေးမြန်းချက်များကိုလုပ်ဆောင်ပါ
$result = $db->query('SELECT * FROM users');
while ($row = $result->fetch_assoc()) {
echo $row['username'] . '<br>';
}
$db->close();
Function Call overhead ကိုလျှော့ချပါ သင်မကြာခဏ Get_charet () , အထူးသဖြင့်ကွင်းကွင်းသို့မဟုတ်မြင့်မားသောတစ်ပြိုင်နက်တည်းဖြစ်ရပ်များတွင်သင်အကြိမ်အရေအတွက်ကိုလျှော့ချပါ။
Code ထိန်းသိမ်းမှုကိုတိုးတက်အောင်လုပ်ပါ Centrally ဇာတ်ကောင်ကို set သတင်းအချက်အလက်များ။ အကယ်. သင်သည်အနာဂတ်တွင် cache ကိုတိုးချဲ့ရန်သို့မဟုတ်ပြုပြင်ရန်လိုအပ်ပါကတစ်နေရာတည်းကိုသာပြုပြင်ရန်သာလိုအပ်သည်။
debug နှင့်စောင့်ကြည့်ရန်လွယ်ကူသည် cache layer သည် logs, debug output သို့မဟုတ် cache ပျက်ကွက်ယန္တရားများကိုအလွယ်တကူထည့်နိုင်သည်။
သင်၏လျှောက်လွှာဖြန့်ဝေခြင်းသို့မဟုတ်ရှည်လျားသောဆက်သွယ်မှုများ (SWOOLE, Workermans စသည်ဖြင့်) ဆက်သွယ်မှုများပြုလုပ်ပါက cactor caccess ကိုတိုးချဲ့ခြင်းကိုတိုးချဲ့ရန်အကြံပြုသည်။
ဥပမာအားဖြင့်, သင်ဆက်သွယ်မှုပြင်ဆင်မှုများကို APCU, MEMCACCACED သို့မဟုတ် REDIS တို့ဖြင့် cache cache လုပ်နိုင်ပြီးလိုအပ်သည့်အခါလုပ်ငန်းစဉ်များကိုမျှဝေနိုင်သည်။
တစ်ချိန်တည်းမှာပင်မှတ်စု - Multi-Threaded သို့မဟုတ် Multi-process အခြေအနေများတွင် static variable များနှင့်အရာဝတ်ထု attribute များ၏ cache သည်လက်ရှိဖြစ်စဉ်တွင်သာတရားဝင်သည်,