Modern PHP လျှောက်လွှာဖွံ့ဖြိုးတိုးတက်မှုတွင် Orm (Object Reactoral Mapping Mapping Mapping Mapping Mapping) မူဘောင်သည်အသုံးချပရိုဂရမ်များနှင့်ဒေတာဘေ့စ်များကိုချိတ်ဆက်ရန်အဓိကနည်းလမ်းဖြစ်လာသည်။ Laravel's eloquent, DOCRENTINGS နှင့် RedbeanPH ကဲ့သို့သောမူဘောင်များသည်ဒေတာဘေ့စ်စစ်ဆင်ရေး၏ရှုပ်ထွေးမှုကိုအလွန်ရိုးရှင်းစေသည်။ သို့သော် Orm ၏အဆင်ပြေမှုသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်း, အထူးသဖြင့်တစ်ပြိုင်နက်တည်းဖြင့်အဆင့်မြင့်သောဒေတာအမျိုးမျိုးသို့မဟုတ်ကြီးမားသောဒေတာအမျိုးမျိုး,
ဤဆောင်းပါးသည် MySQLI_STMT :: AttR_Get function ကို MySQLI_GETTS ကိုမည်သို့တိုးတက်အောင်လုပ်ရမည်ကိုလေ့လာပါမည် ။
MySQLI_STMM :: Attr_get သည် PHP တွင် MySQLI_STMT Object ၏နည်းလမ်းများအနက်မှတစ်ခုဖြစ်သည်။ ၎င်း၏ function ကိုပြင်ဆင်ထားသည့်ကြေညာချက်၏လက်ရှိ attribute တန်ဖိုးကိုရယူရန်ဖြစ်သည်။ တရားဝင်စာရွက်စာတမ်းများသည်ဤလုပ်ဆောင်မှုကိုအတိုချုပ်အတိုချုပ်ဖော်ပြထားသော်လည်းစွမ်းဆောင်ရည်ကိုထုတ်ယူခြင်းနှင့်အခြေခံအကောင်းမြင်မှုတွင်အလွန်လက်တွေ့ကျသည်။
လက်ရှိတွင်ထောက်ပံ့ထားသော attributes များသည်အဓိကအားဖြင့်ပါဝင်သည် -
MySQLI_STMT_ATTR_APAX_Length
MySQLI_STMT_ATTR_CARSOR_TYPE : cursor type (ဥပမာ, ရှေ့သို့ cursor)
MySQLI_STMT_ATTRT_ATTRE_ROWS : Pre-Extracted အတန်းအရေအတွက် (ရလဒ်ထုတ်ယူမှုစွမ်းဆောင်ရည်ကိုအကောင်းဆုံး)
Orm Framework အများစုသည်နောက်ခံဒေတာဘေ့စ်ယာဉ်မောင်းကိုစိတ်ကြိုက်ပြင်ဆင်ခြင်းသို့မဟုတ်ဇာတိ MySQLI_STMMT ကိုထောက်ပံ့ရန် အတွက် database interaction များကိုအလွန်နက်နက်ရှိုင်းရှိုင်း encapsulate လုပ်နေစဉ်,
စွမ်းဆောင်ရည်မြင့်မားသောအခြေအနေများတွင်လက်ရှိကြိုတင်မရသေးသည့်ဖော်ပြချက်သည်သင့်လျော်သော cursor type ကိုအသုံးပြုသည်ကိုအတည်ပြုရန်လိုအပ်နိုင်သည်။ scrollable cursor ကိုဖွင့်ထားသော်လည်းအမှန်တကယ်မလိုအပ်ပါက၎င်းသည်အပိုဆောင်းမှတ်ဉာဏ်နှင့်အရင်းအမြစ်အသုံးပြုမှုကိုဖြစ်ပေါ်စေလိမ့်မည်။
$stmt = $mysqli->prepare("SELECT * FROM logs WHERE created_at > ?");
$stmt->bind_param("s", $sinceTime);
$stmt->execute();
$cursorType = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
if ($cursorType !== MYSQLI_CURSOR_TYPE_NO_CURSOR) {
error_log("အသိပေး:လက်ရှိကြေငြာချက်သည်ပုံမှန်မဟုတ်သော cursor ကိုအသုံးပြုသည်,စွမ်းဆောင်ရည်ကိုထိခိုက်စေနိုင်သည်");
}
Developerers များသည်မြင့်မားသော overhead settings များကိုအလွဲသုံးစားလုပ်ခြင်းရှိမရှိကို orm ၏ "query monthory" သို့မဟုတ် "စွမ်းဆောင်ရည်ဆိုင်ရာစွမ်းဆောင်ရည်ဆိုင်ရာရောဂါရှာဖွေရေးပုံစံ" ထဲသို့ "query monuat" သို့မဟုတ် "query diagnostictic module module module module" ထဲသို့ထည့်သွင်းနိုင်သည်။
MySQLI_STMT အတွက်အကောင်းဆုံးအလေ့အကျင့်များထဲမှတစ်ခုမှာ၎င်းကို attr_set ဖြင့်အသုံးပြုရန်ဖြစ်သည်။ ဥပမာအားဖြင့်အချို့သောကိစ္စရပ်များတွင် Metadata အပြောင်းအလဲများကိုမြန်မြန်ဆန်ဆန်မြန်မြန်ဆန်ဆန်မြန်မြန်ဆန်ဆန်မွမ်းမံရန်မလိုအပ်ကြောင်းအချို့ကိစ္စများတွင်ကြိုတင်သတ်မှတ်ထားနိုင်သည်။
$stmt = $mysqli->prepare("SELECT description FROM products");
$stmt->attr_set(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH, false);
$stmt->execute();
ထို့နောက် setup ကိုအောင်မြင်ကြောင်းအတည်ပြုရန် attr_get ကို သုံးပါ။
$maxLengthUpdate = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
if (!$maxLengthUpdate) {
error_log("ကွင်းဆင်းအရှည် update ကိုအောင်မြင်စွာပိတ်ထားသည်,တိုးတက်လာသောစွမ်းဆောင်ရည်");
}
ဤ optimization နည်းလမ်းကိုအမှန်တကယ်စီမံကိန်းများသို့ပိုမိုကောင်းမွန်စွာကျင့်သုံးနိုင်ရန်အတွက် Orm ၏ "Pre-Execution Offs" သို့မဟုတ် "ကြေငြာချက် -trapper" သို့အောက်ပါယုတ္တိဗေဒကိုထည့်သွင်းရန်စဉ်းစားနိုင်သည်။
စုံစမ်းမှုမြင်ကွင်းသည်ဖြည့်စွက်ကွင်းဆင်း metadata လိုအပ်သည်ကို dynonically ဆုံးဖြတ်ရန် ။
ကြေညာချက် Properties ကိုကြေငြာချက်အမျိုးအစားအရ (ဥပမာအားဖြင့်အများဆုံးအရှည် update ကိုပိတ်ထားပါ)
Execute ပြီးနောက် Att_get ကို အသုံးပြု. Settings ရလဒ်များနှင့်မှတ်တမ်းသို့မဟုတ်စွမ်းဆောင်ရည်ဆိုင်ရာခွဲခြမ်းစိတ်ဖြာမှုအချက်အလက်များကိုစစ်ဆေးရန် attr_get ကို သုံးပါ ။
ဥပမာအားဖြင့်,
class MyStatementWrapper {
protected $stmt;
public function __construct(mysqli_stmt $stmt) {
$this->stmt = $stmt;
$this->optimize();
}
protected function optimize() {
$this->stmt->attr_set(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH, false);
}
public function execute() {
$this->stmt->execute();
$status = $this->stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
if (!$status) {
PerformanceLogger::log("Field အရှည် update ကိုပိတ်ထားသည် - " . date('Y-m-d H:i:s'));
}
}
}
ဤနည်းအားဖြင့် Orm ကိုအသုံးပြုနေစဉ်, သင်သည်ဇာတိမောင်းသူအဆင့်တွင်စွမ်းဆောင်ရည်ထိန်းချုပ်မှုစွမ်းရည်များကိုလည်းပြုလုပ်နိုင်သည်။
Orm သည်ဖွံ့ဖြိုးတိုးတက်မှုထိရောက်မှုကိုများစွာတိုးတက်ကောင်းမွန်စေသော်လည်းကျွန်ုပ်တို့သည်စွမ်းဆောင်ရည်ကောင်းမွန်မှု၏ရှုထောင့်တွင် "အခြေခံဝါဒီ" ချဉ်းကပ်မှုကိုပြန်သွားရန်လိုအပ်နေဆဲဖြစ်သည်။ MySQLI_STMT :: Attri_et သည် developer များလျစ်လျူရှုသောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်ရောဂါရှာဖွေခြင်း, ညှိခြင်းနှင့်ကွဲလွဲမှုဆိုင်ရာရှာဖွေတွေ့ရှိမှုများတွင်ထူးခြားသောအခန်းကဏ် plays မှပါ 0 င်သည်။