Daily Php Development တွင်အကြီးစားဒေတာစုဆောင်းမှုများကိုကိုင်တွယ်ရာတွင်မှတ်ဉာဏ်ပိတ်ဆို့မှုများကိုမကြာခဏကြုံတွေ့လေ့ရှိသည်။ PHP ၏မီးစက်ကို PHP 5.5 ကတည်းကမိတ်ဆက်ပေးခဲ့ပြီး, dataff_ukey () function ကို array_diff_ukey () function ကိုရှာဖွေရန်နှင့်နှိုင်းယှဉ်ရန်အတွက်အသုံးပြုသည်။ ဤလုပ်ငန်းဆောင်တာနှစ်ခုကိုပေါင်းစပ်သောအခါကျွန်ုပ်တို့သည်အထူးသဖြင့်ဒေတာအရင်းအမြစ်အလွန်ကြီးမားသည့်အခါတွင်ကျွန်ုပ်တို့သည်မှတ်ဉာဏ်စွမ်းဆောင်ရည်ကိုများစွာတိုးတက်စေနိုင်သည်။
ဤဆောင်းပါးသည်ဤပေါင်းစပ်မှု၏အားသာချက်များကိုမိတ်ဆက်ပေးပြီး၎င်းတို့ကိုထိရောက်စွာအသုံးပြုရမည်ကိုဥပမာပြပါလိမ့်မည်။
ရိုးရာခင်းကျင်းသော traversal တစ်ခုလုံးကို memory ကို loading လုပ်ရန်လိုအပ်ပြီးမီးစက်သည်အချက်အလက်အားလုံးကိုတစ်ပြိုင်တည်းမတင်ဘဲလိုအပ်သည့်အချက်အလက်များကိုတစ်ချိန်တည်းတွင်တင်ရန်လိုအပ်သည့်အချက်အလက်များကိုထုတ်ပေးသည် ။
ဥပမာ Generator function သည်အောက်ပါအတိုင်းဖြစ်သည် -
function getLargeArrayFromSource() {
for ($i = 0; $i < 1000000; $i++) {
yield "key_$i" => "value_$i";
}
}
ဤမီးစက်သည် key_999999 မှ key_999999 သို့အဓိကတန်ဖိုးများဖြင့်ကြီးမားသောခင်းကျင်းမှုတစ်ခုပြုလုပ်လိမ့်မည်။
array_diff_ukey () function ကို arrays နှစ်ခု၏သော့များနှင့်ဒုတိယ array key တွင်မပါ 0 င်သောပထမနေရာတွင်မပါ 0 င်သောပထမအချက်များနှင့်နှိုင်းယှဉ်ရန်အသုံးပြုသည်။ များသောအားဖြင့်ဤလုပ်ဆောင်မှုသည်အပြည့်အဝ array နှစ်ခုကိုရရှိသည်။
သို့သော်ကျွန်ုပ်တို့သည် traversal နှင့်နှိုင်းယှဉ်ရန်အတွက် iterator_to_array () နှင့်ပေါင်းစပ်ပြီး generator မှတစ်ဆင့်ဤလုပ်ငန်းကိုဒီ function မှတဆင့်အချက်အလက်များကိုကျွန်ုပ်တို့ဖြတ်သန်းသွားနိုင်သည်။
function getLocalKeys() {
return [
"key_1" => "old_value_1",
"key_2" => "old_value_2",
"key_999999" => "old_value_final"
];
}
function getRemoteKeysGenerator() {
for ($i = 0; $i < 1000000; $i++) {
yield "key_$i" => "remote_value_$i";
}
}
$localKeys = getLocalKeys();
$remoteKeysGenerator = getRemoteKeysGenerator();
// နှိုင်းယှဉ်မှုအတွက်ချိန်ခွင်လျှာပြောင်းရန်,သို့သော်ကွဲပြားခြားနားသောသော့အမည်များနှင့်အတူဒေတာကိုသာထိန်းသိမ်းထားကြသည်
$diff = array_diff_ukey(
iterator_to_array($remoteKeysGenerator, false),
$localKeys,
function ($a, $b) {
return strcmp($a, $b);
}
);
echo "differential data keys အရေအတွက်: " . count($diff) . PHP_EOL;
// နမူနာ output processing
foreach (array_slice($diff, 0, 5, true) as $key => $value) {
echo "ကိုက်ညီသောသော့မရှိပါ: $key => $value" . PHP_EOL;
}
အကယ်. နှိုင်းယှဉ်မှုအချက်အလက်များသည်ကြီးမားလွန်းပါက Iterator_to_array () သည် မှတ်ဥာဏ်ဖိအားကိုဖြစ်ပေါ်စေနိုင်သည်။ ဤအချိန်တွင်သင်သည်ခြားနားချက်နှိုင်းယှဉ်မှုယုတ္တိဗေဒကိုသင်ကိုယ်တိုင်အကောင်အထည်ဖော်နိုင်ပြီးမီးစက်ပစ္စည်းများကိုတစ်ပြိုင်တည်းဖြတ်သန်းနိုင်ပြီး၎င်းသည်ဒေသသော့နှင့်အတူတည်ရှိသည်ကိုဆုံးဖြတ်သည်။
Hash collection များသို့ local array keys များကိုထုတ်ယူခြင်းဖြင့်သင်သည်နှိုင်းယှဉ်ခြင်းထိရောက်မှုကိုလျင်မြန်စွာရှာဖွေ။ တိုးတက်လာနိုင်သည်။
ထုတ်ကုန်များကိုတတိယပါတီ APIs များနှင့်ညှိနှိုင်းသည့်စနစ်တစ်ခုကိုတတိယပါတီ၏စည်းမျဉ်းစည်းကမ်းများနှင့်တစ်ပြိုင်နက်တည်းစည်းလုံးစေသည့်စနစ်တစ်ခုတည်ဆောက်နေသည်ဆိုပါစို့ ။ ဤပျင်းရိမှု + ခြားနားချက်နှိုင်းယှဉ်မှုမဟာဗျူဟာသည်အထူးသဖြင့်မှတ်ဉာဏ် - ကန့်သတ်ဆာဗာများတွင်အထူးအရေးကြီးသည်။
မီးစက်ကို Array_diff_ukey () function ကိုပေါင်းစပ်ခြင်းအားဖြင့်အကြီးစားဒေတာအပြောင်းအလဲအတွက် Memory Phil Programs ၏မှတ်ဉာဏ်အသုံးပြုမှုကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ မီးစက်သည်ကွပ်မျက်ခြင်းကိုနှောင့်နှေးစေနိုင်ပြီး array_diff_ukey () သည် သော့ချက်အမည်များကိုနှိုင်းယှဉ်ရန်လွယ်ကူသည်။ ဤဆောင်းပါးတွင်ဥပမာများကသင်၏စီမံကိန်းအတွက်သိသာထင်ရှားသောအကျိုးသက်ရောက်မှုများကိုဖြစ်ပေါ်စေလိမ့်မည်။