ပြုပြင်ခြင်းဒေတာဘေ့စ်စုံစမ်းမှုသည် PHP တွင်ရလဒ်များကို PHP တွင်ရလဒ်များရရှိပါက MySQLI_RESUTE_RESELD :: FETCH_CONDICH ကို အသုံးပြု. ရလဒ်အနေဖြင့်ကော်လံတစ်ခုကိုသာစိတ်ဝင်စားပါက၎င်းသည်အလွန်ထိရောက်သောနည်းတစ်နည်းဖြစ်သည်။ ဤချဉ်းကပ်မှုသည်ရိုးရာ fetch_assoc () သို့မဟုတ် fetch_row ()) သို့မဟုတ် fetch_row () ထက်မှတ်ဉာဏ်စုဆောင်းမှုသည်အထူးသဖြင့်အချက်အလက်အမြောက်အများကိုကိုင်တွယ်ရာတွင်ပိုမိုကောင်းမွန်သည်။ ဤဆောင်းပါးသည် PHP အစီအစဉ်များကိုတိုးတက်စေရန်အတွက် Fetch_Column () ၏စွမ်းဆောင်ရည်ကို အသုံးပြု. Memory အသုံးပြုမှုကိုမည်သို့ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရမည်ကိုလေ့လာလိမ့်မည်။
မှတ်ဉာဏ်ကိုပိုမိုကောင်းမွန်စေရန်တိုက်ရိုက်နှင့်ထိရောက်သောနည်းလမ်းများအနက်မှတစ်ခုမှာ Select * ကို အသုံးပြုခြင်းအစား SQL Queries များတွင်သင်လိုအပ်သောကော်လံကိုသာရွေးချယ်ရန်ဖြစ်သည်။ ဥပမာအားဖြင့်:
$result = $mysqli->query("SELECT username FROM users");
၎င်းသည်ဒေတာဘေ့စ်ဆာဗာမှ PHP သို့ကူးစက်သောအချက်အလက်ပမာဏကိုလျှော့ချနိုင်ပြီးအရင်းအမြစ်မှမှတ်ဥာဏ်သုံးစွဲမှုကိုလျှော့ချနိုင်သည်။
FETT_AsSOC () Associative Array ကိုပြန်ပို့သည်။ Fetter_row () သည် index array () fetter_columm () ကိုတိုက်ရိုက်ပြန်ပို့သည်။
while ($username = $result->fetch_column()) {
// ကိုင်တွယ်ဖြေရှင်းသည်$username
}
ဤနည်းလမ်းသည်မလိုအပ်သောခင်းကျင်းမှုကိုမလိုအပ်ပါ။
ဘုံအလေ့အကျင့်သည်ရလဒ်အားလုံးကို array တစ်ခုထဲသို့ထည့်သွင်းရန်ဖြစ်သည်။
$usernames = [];
while ($username = $result->fetch_column()) {
$usernames[] = $username;
}
ဒေတာ volume သည်ကြီးမားလျှင်၎င်းသည်မှတ်ဥာဏ်အသုံးပြုမှုပမာဏများစွာကိုဖြစ်ပေါ်စေနိုင်သည်။ အပြောင်းအလဲနဲ့ယုတ္တိဗေဒကခွင့်ပြုမယ်ဆိုရင်ဒေတာအားလုံးကိုတစ်ပြိုင်နက်တည်းဖွင့်တာထက်စာဖတ်စဉ်ဖတ်ပြီးလုပ်ဆောင်ပါ။
while ($username = $result->fetch_column()) {
process_username($username); // 假设是某个ကိုင်တွယ်ဖြေရှင်းသည်函数
}
ပုံမှန်အားဖြင့် mysqli_query () client memory အတွက်ရလဒ်များအားလုံးက client memory ကို cachees ။ အကယ် . ဒေတာပမာဏသည်အထူးသဖြင့်ကြီးမားပါက,
$result = $mysqli->query("SELECT username FROM users", MYSQLI_USE_RESULT);
ဤနည်းလမ်းသည်ရလဒ်အားလုံးကိုမှတ်ဉာဏ်ထဲသို့မတင်နိုင်ပါ, သို့သော်ကြားခံရခြင်းမရှိသောရလဒ်များသည်မပြုပြင်မီအခြားမေးမြန်းချက်များကိုမလုပ်ဆောင်နိုင်ကြောင်းသတိပြုရန်လိုအပ်သည်။
သင်၏ PHP script သည်မြင့်မားသောဝန်များကိုလုပ်ဆောင်ပါက (ထိုကဲ့သို့သောဒေတာထုတ်ယူမှုအမြောက်အများကဲ့သို့) သင်၏ PHPP.ini တွင် memorter_limit ကို သေချာစွာသတ်မှတ်ရန်သေချာစေပါ။ ၎င်းကိုအောက်ပါနည်းလမ်းများဖြင့်ပြောင်းလဲနိုင်သည်။
ini_set('memory_limit', '128M');
သို့သော် Memory Caps ကိုတိုးမြှင့်ခြင်းထက်ပရိုဂရမ်ယုတ္တိဗေဒကိုပိုမိုကောင်းမွန်စေရန်ပိုကောင်းသည်။
ကော်လံတန်ဖိုးများစွာကိုပြန်ပို့ရန်လိုအပ်သောလုပ်ဆောင်ချက်များအတွက်မီးစက်သည်နှောင့်နှေးသောတင်ခြင်း၏အကျိုးသက်ရောက်မှုကိုပေါင်းစပ်နိုင်သည်။
function get_usernames(mysqli_result $result): Generator {
while ($username = $result->fetch_column()) {
yield $username;
}
}
// အသုံးပြု
foreach (get_usernames($result) as $username) {
process_username($username);
}
မီးစက်၏အားသာချက်မှာ၎င်းသည်ဒေတာအားလုံးကိုမှတ်ဉာဏ်ထဲသို့မထည့်သွင်းနိုင်သည့်အရာမှာ၎င်းသည်ကြီးမားသောရလဒ်အစုံများကိုကိုင်တွယ်ရန်အထူးသင့်လျော်သည်။
MySQLI_RESULT :: FETT_COLUCH () သည်မှတ်ဉာဏ် optimization လေ့ကျင့်ခန်းတစ်ခုဖြစ်သော်လည်း, ဤ optimization နည်းလမ်းများသည်များစွာသောအချက်အလက်ပမာဏနှင့်အတူအခြေအနေများနှင့်အတူအခြေအနေများအတွက် processing များအတွက်အထူးသဖြင့်အရေးကြီးသောဖြစ်ကြသည်။
စွမ်းဆောင်ရည်မြင့်မားသော PHP နှင့်ပတ်သက်သည့်ပိုမိုလက်တွေ့ကျသောအတွေ့အကြုံများကို database များနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းတွင် https://gitbox.net/php-db-optimization တွင်တွေ့နိုင်သည်