လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: AttR_Get သည်မကြာခဏဖုန်းခေါ်ဆိုမှုများမကြာခဏခေါ်ဆိုမှုများအတွက်သင့်တော်ပါသလား။

MySQLI_STMT :: AttR_Get သည်မကြာခဏဖုန်းခေါ်ဆိုမှုများမကြာခဏခေါ်ဆိုမှုများအတွက်သင့်တော်ပါသလား။

M66 2025-06-23

Developer များက PHP ၏ MySQLI လုပ်ငန်းများကိုဒေတာဘေ့စ်စစ်ဆင်ရေးအတွက် PHP ၏ MySQLI extension ကိုအသုံးပြုသောအခါစွမ်းဆောင်ရည် optimization ပြ problems နာများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ အထူးသဖြင့်မြင့်မားသောတစ်ပြိုင်နက်တည်းနှင့်မြင့်မားသောကြိမ်နှုန်းစစ်ဆင်ရေးအခြေအနေများတွင်မှန်ကန်သောလုပ်ဆောင်မှုနှင့်ခေါ်ဆိုမှုကြိမ်နှုန်းကိုရွေးချယ်ရန်အလွန်အရေးကြီးသည်။ ဤဆောင်းပါးသည် MySQLI_STMTMT :: AttR_Get function ကိုစူးစမ်းလေ့လာရန်အတွက်မကြာခဏဆိုသလိုမကြာခဏဖုန်းခေါ်ဆိုမှုများ၌မကြာခဏခေါ်ဆိုမှုများပြုလုပ်ရန်သင့်တော်သည်ဖြစ်စေစူးစမ်းလေ့လာရန်။

MySQLI_STMT :: Attr_et ကဘာလဲ။

MySQLI_STMT :: Attr_et သည် MySQLI extension တွင်ပြင်ဆင်ထားသည့်ဖော်ပြချက်တစ်ခုရရှိရန်အတွက်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 mixed mysqli_stmt::attr_get(int $attribute)

MySQLI_STMTT_APDATE_AXDATE_MAX_Length စသည့် parameter တစ်ခုအနေဖြင့်စဉ်ဆက်မပြတ် attribute ကိုလက်ခံသည်။

အသုံးပြုမှုမြင်ကွင်းခွဲခြမ်းစိတ်ဖြာ

ဤလုပ်ဆောင်မှု၏အသုံးပြုမှုဇာတ်ညွှန်းကိုမေးခွန်းထုတ်ပြန်ကြေငြာချက်မပြုမီကြေငြာချက်ကိုစစ်ဆေးရန်သို့မဟုတ် configure လုပ်ရန်အဓိကအားဖြင့်အသုံးပြုသည်။ ဥပမာအားဖြင့်, ရလဒ်အစုအဝေးကိုမှတ်ဉာဏ်အလုံအလောက်ထည့်သွင်းရန်အများဆုံးကာလအရှည်ကိုသင်ရရှိရန်လိုအပ်သည့်အခါသင်အသုံးပြုနိုင်သည်။

 $stmt = $mysqli->prepare("SELECT name FROM users");
$stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);

ဤအခြေအနေတွင် attr_get သည်လက်ရှိကြေငြာချက်အရာဝတ်ထု၏အတွင်းပိုင်းဂုဏ်သတ္တိများကိုရယူရန်အဆင်ပြေသောကိရိယာတစ်ခုဖြစ်သည်။

စွမ်းဆောင်ရည်ထည့်သွင်းစဉ်းစား

MySQLI_STMT :: AttR_Get ကိုယ်တိုင်၏ခေါ်ဆိုမှုသည်စျေးကြီးခြင်းမဟုတ်ပါ, အဘယ်ကြောင့်ဆိုသော်၎င်းသည်ရိုးရှင်းသော attribute တန်ဖိုးကိုရရှိသည်။ သို့သော်ပြ problem နာ၏အဓိကသော့ချက်မှာ - ကြိမ်နှုန်းမြင့်မားသောလုပ်ငန်းများ၌ဤသို့သောလုပ်ဆောင်မှုခေါ်ဆိုမှုများသည်တဖြည်းဖြည်းတိုးပွားလာသောအကျိုးသက်ရောက်မှုရှိပါသလား။

1 ။ function ကို၏ကုန်ကျစရိတ်သူတို့ကိုယ်သူတို့ခေါ်ဆိုသည်

PHP သည်အဓိပ္ပါယ်ဖွင့်ဆိုချက်ဘာသာစကားတစ်ခုဖြစ်ပြီး function တစ်ခုစီတွင်အချို့သောအခြေအနေတွင်ဖန်တီးမှုကုန်ကျစရိတ်ရှိသည်။ မြင့်မားသောတစ်ပြိုင်နက်တည်းသို့မဟုတ်ကွင်းအတွင်းရှိ attr_get သို့မကြာခဏခေါ်ဆိုမှုသည်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းကိုဖြစ်ပေါ်စေလိမ့်မည်မဟုတ်သော်လည်းမလိုအပ်သော function ခေါ်ဆိုမှု overhead ကိုမိတ်ဆက်ပေးလိမ့်မည်မဟုတ်ပေ။

ဥပမာအားဖြင့်, အောက်ပါကုဒ်ဖွဲ့စည်းပုံသည်မြင့်မားသောကြိမ်နှုန်းကွင်းများတွင်သိသာထင်ရှားသည်။

 for ($i = 0; $i < 100000; $i++) {
    $stmt = $mysqli->prepare("SELECT name FROM users WHERE id = ?");
    $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
    // ...
}

ဤအခြေအနေတွင် attr_et သို့ခေါ်ဆိုမှုသည်မလိုအပ်သောကြောင့်အထူးသဖြင့်သင်တန်ဖိုးကိုမမှီခိုသည့်အခါယုတ္တိတရားစီရင်ချက်အတွက်ပြန်လည်မထားဘဲပါ။

2 ။ ဒေတာဘေ့စ်အပြန်အလှန်၏ဝန်ထုပ်ဝန်ပိုး

Att_et သည် ဒေတာဘေ့စ်ကိုတိုက်ရိုက်ဝင်ရောက်ခြင်းမဟုတ်သော်လည်းကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုမကြာခဏတီထွင်ခြင်းသည်ကုန်ကျစရိတ်ဖြစ်သည်။ အချိန်တွေအများစုသည်သင်အမှန်တကယ်အကောင်းမြင်သင့်သည့်အရာမှာကြေငြာ ချက် ပြင်ဆင်ခြင်း ( ပြင်ဆင် () ),

3 ။ ရလဒ်များကိုသိုလှောင်နိုင်ပါသလား?

အဆင့်မြင့်သောကြိမ်နှုန်းစစ်ဆင်ရေးများတွင် attr_get ကို အကြိမ်ပေါင်းများစွာခေါ်ဆိုပါက attribute တန်ဖိုးကိုရရန်အကြိမ်များစွာခေါ်ဆိုပါကတန်ဖိုးမပြောင်းလဲပါကရလဒ်ကိုသင်လုံးဝ cache လုပ်နိုင်သည်။

 $max_length_attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
// နောက်ဆက်တွဲစစ်ဆင်ရေးများတွင်တိုက်ရိုက်အသုံးပြုပါ $max_length_attr,အစားထပ်ခါတလဲလဲခေါ်ဆို၏ attr_get

ဤချဉ်းကပ်နည်းသည်ယုတ္တိနည်းအားဖြင့်လုံခြုံစိတ်ချရမှုနှင့်ပိုမိုထိရောက်စေသည်။

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

MySQLI_STMT :: Att_et_et function သည်ပေါ့ပါးသော်လည်းကြိမ်နှုန်းမြင့်မားသောလည်ပတ်မှုများတွင်အထူးသဖြင့်ကိစ္စရပ်နှစ်ခုတွင်မကြာခဏခေါ်ဆိုခြင်းသည်အကောင်းဆုံးအလေ့အကျင့်မဟုတ်ပါ။

  1. attribute value ကိုပြောင်းလဲလိမ့်မည်မဟုတ်ပါ ။ cache ရလဒ်ကိုထည့်သွင်းစဉ်းစားသင့်သည်။

  2. ကွင်းဆက်ထဲကိုဖုန်းခေါ်ဆိုမှု - ကွင်းဆက်ထဲမှပြောင်းရွှေ့သင့်သည် (သို့) ထပ်ခါတလဲလဲဝယ်ယူခြင်းကိုရှောင်ရှားရန်အစီအစဉ်ဖွဲ့စည်းပုံကိုချိန်ညှိသင့်သည်။

PHP Database စစ်ဆင်ရေးစွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်သောအခါဒေတာဘေ့စ်ဆက်သွယ်မှုစီမံခန့်ခွဲမှု, Function Calls ၏မိုက်ခရို optimization သည်ကိတ်မုန့်ပေါ်တွင် icing ဖြစ်သည်။ သို့သော်၎င်းကိုမလွှမ်းမိုးသင့်ပါ။

နမူနာကုဒ် optimization မတိုင်မီနှင့်ပြီးနောက်နှိုင်းယှဉ်

optimization မတိုင်မီ:

 for ($i = 0; $i < 10000; $i++) {
    $stmt = $mysqli->prepare("SELECT name FROM users WHERE id = ?");
    $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
}

optimization ပြီးနောက်: