ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်းအချက်အလက်အမြောက်အများကိုများပြားစွာလုပ်ဆောင်သောအခါကြီးမားသောခင်းကျင်းမှုများစွာကိုဝေငှရန်ခဲယဉ်းသည်။ PHP သည်အလွန်အသုံးဝင်သော function array_chunk () ကိုထောက်ပံ့ပေးသည်။ ဤလုပ်ဆောင်မှုသည် Pagination, Batch Processing စသည်တို့အတွက်သင့်လျော်သောအမျိုးမျိုးသောခင်းကျင်းမှုအမျိုးမျိုးကိုခွဲထားနိုင်သည်။ array_chunk () သည် အလွန်အဆင်ပြေသည်။ ဤဆောင်းပါးသည် array_chunk () စွမ်းဆောင်ရည်ပြ problems နာများကိုရှောင်ရှားရန်နည်းလမ်းများကိုထိထိရောက်ရောက်ကြည့်ရှုနိုင်ကြောင်းမိတ်ဆက်ပေးလိမ့်မည်။
array_chunk () function ကို array မျိုးစုံအမျိုးမျိုးသော arrays များသို့ခွဲထားပြီးနှစ်ခုရှုထောင့်ခင်းကျင်းမှုသေးငယ်သည့်နှစ်ဖက်ခင်းကျင်းမှုကိုပြန်လည်ပေးပို့ရန်အသုံးပြုသည်။
အခြေခံ syntax:
array_chunk(array $array, int $size, bool $preserve_keys = false): array
$ array : ခွဲရန်လိုအပ်သည့်ခင်းကျင်း။
$ အရွယ်အစား - သေးငယ်တဲ့ array တစ်ခုစီ၏အရွယ်အစား။
$ Present_Keys : အကယ်. မှန်ကန် ရန်သတ်မှတ်ထားပါကမူရင်းခင်းကျင်းမှု၏သော့အမည်ကိုဆက်လက်ထိန်းသိမ်းထားလိမ့်မည်။ အကယ်. မှားယွင်းသော် အကယ်. လျှို့ဝှက်ချက်ကိုပြန်လည်ရည်ညွှန်းလိမ့်မည်။
နမူနာကုဒ်:
<?php
$array = range(1, 20); // တစ် ဦး ပါဝင်သော generate 1 ရောက်လာ 20 ၏ခင်းကျင်း
$chunked = array_chunk($array, 5);
print_r($chunked);
?>
ရလဒ်ရလဒ် -
Array
(
[0] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
[1] => Array ( [0] => 6 [1] => 7 [2] => 8 [3] => 9 [4] => 10 )
[2] => Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 [4] => 15 )
[3] => Array ( [0] => 16 [1] => 17 [2] => 18 [3] => 19 [4] => 20 )
)
ဤနည်းလမ်းသည်သေးငယ်သော array များအတွက်အလွန်ထိရောက်သော်လည်း, အကယ်. သင်သည်ကြီးမားသောခင်းကျင်းမှုများစွာကိုကိုင်တွယ်ဖြေရှင်းပါကစွမ်းဆောင်ရည်ပြ problems နာများသည်တဖြည်းဖြည်းပေါ်ထွက်လာလိမ့်မည်။
Array သည်အလွန်ကြီးမားသည်, array_chunk () ကို တိုက်ရိုက် အသုံးပြု. တိုက်ရိုက်မှတ်ဉာဏ်အသုံးပြုမှုကိုဖြစ်ပေါ်စေနိုင်သည်။ အဓိကအကြောင်းပြချက်များမှာအောက်ပါအတိုင်းဖြစ်သည် -
Memory Footprint : array_chunk () သည် Memory အသုံးပြုမှုသိသိသာသာတိုးလာစေသည့် array_chunk အသစ် () အသစ်အမျိုးမျိုးကိုဖန်တီးသည်။
မလိုအပ်သောသော့ချက်အမည်ပြန်လည်တည်ဆောက်ရေး - အကယ်. $ Presentify_Keys Parameter သည် မှားယွင်းသော် , array တစ်ခုစီသည်သော့ကိုထပ်ခါထပ်ခါထည့်သွင်းပါလိမ့်မည်။
ကြီးမားတဲ့ arrays ကြီးမားတဲ့အတွက်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းသည်အထူးသဖြင့်အကောင်းမြင်ခြင်းမရှိဘဲသိသိသာသာသိသာထင်ရှားစေပြီးပရိုဂရမ်ပျက်သွားခြင်းသို့မဟုတ်နှေးကွေးစွာတုံ့ပြန်မှုဖြစ်စေနိုင်သည်။
ကြီးမားတဲ့ array တွေနဲ့ဆက်ဆံတဲ့အခါစွမ်းဆောင်ရည်မြှင့်တင်မှုတွေကိုရှောင်ရှားနိုင်ဖို့အတွက်အောက်ပါ optimization အစီအမံတွေကိုကျွန်တော်တို့ယူနိုင်တယ်။
Array_slice () function သည် array တစ်ခုလုံးကိုကူးယူခြင်းမရှိဘဲ array မှ subarray များကိုထုတ်ယူနိုင်သည်။ array_chunk () ,), array_slice () နှင့်နှိုင်းယှဉ်ပါကခင်းကျင်းရေးထားသည့်အချက်အလက်များကိုလိုအပ်သည့်အချက်အလက်များကိုလိုအပ်သလိုလုပ်ဆောင်ရန်လိုအပ်သည့်အချက်အလက်များကိုလိုအပ်သလိုလုပ်ဆောင်ရန်ခွင့်ပြုသည်။
Optimization ဥပမာ:
<?php
$array = range(1, 1000000); // ငါတို့မှာဒြပ်စင်အတော်များများအများကြီးရှိတယ်ဆိုပါစို့
$chunk_size = 10000; // တစ်ခုချင်းစီကိုအပြောင်းအလဲနဲ့ 10000 ဒြပ်
// အသုံးပြု array_slice ကြီးမားသော arrays မှတဆင့်ကြားမှာ
for ($i = 0; $i < count($array); $i += $chunk_size) {
$chunk = array_slice($array, $i, $chunk_size);
// ကိုင်တွယ်ဖြေရှင်းသည် $chunk အချက်များ,ဥပမာအားဖြင့်ပေးပို့ပါ HTTP တောင်းဆိုမှုစသည်တို့ကို
// တောင်းဆိုမှုကိုယူဆ URL အတွက် https://m66.net/api/data
file_get_contents("https://m66.net/api/data?data=" . urlencode(json_encode($chunk)));
}
?>
array_slice () ကိုသုံးသောအခါတွင်ကြီးမားသောအရွယ်အစားကို ဖြတ်. သတ်မှတ်ထားသောအရွယ်အစား၏အချက်အလက်များသာလျှင်မှတ်ဥာဏ်အသုံးပြုမှုကိုထိထိရောက်ရောက်လျှော့ချနိုင်ပြီးအချက်အလက်များလွန်းခြင်းကြောင့်စွမ်းဆောင်ရည်ပြ problems နာများကိုထိရောက်စွာလျှော့ချနိုင်သည်။
အစောပိုင်းတွင်ဖော်ပြခဲ့သည့်အတိုင်း array_chunk () ၏ Pray'Nes Parameters Parameter သည်မှတ်ဉာဏ်အသုံးပြုမှုကိုအကျိုးသက်ရောက်လိမ့်မည်။ ကျွန်ုပ်တို့သည်သော့ချက်အမည်ကိုထိန်းသိမ်းရန်မလိုအပ်ပါကမှတ်ဉာဏ်အသုံးပြုမှုကိုလျှော့ချရန်ဤ parameter ကို မှားယွင်းစွာ သတ်မှတ်ခြင်းသည် ပို. ကောင်းသည်။
<?php
$array = range(1, 1000000);
$chunked = array_chunk($array, 10000, false); // မူရင်းသော့ချက်အမည်မသိမ်းဆည်းပါ
?>
ထိုသို့ပြုလုပ်ခြင်းသည် array တစ်ခုစီ၏အဓိကအကြောင်းရင်းကိုပြန်လည်အမှတ်အသားပြုရန်, မလိုအပ်သောမှတ်ဉာဏ် overhead ကိုလျှော့ချရန်ဖြစ်သည်။
စူပါကြီးမားတဲ့ခင်းကျင်းမှုအတွက်အကောင်းဆုံးနည်းလမ်းမှာ၎င်းတို့ကိုအစိတ်အပိုင်းများတွင်လုပ်ဆောင်ရန်ဖြစ်သည်။ သံသရာများရှိအသုတ်များတွင်အချက်အလက်များကိုထုတ်ယူခြင်းအားဖြင့်ကြီးမားသောခင်းကျင်းမှုကြီးမားသောအပိုင်းအစများကိုတစ်ခုဖြင့်တစ်ခုဖြင့်ပြုလုပ်ရန်သေးငယ်သောအပိုင်းပိုင်းခွဲထားနိုင်သည်, မှတ်ဉာဏ်ဖိအားကိုလျှော့ချနိုင်သည်။
အသုတ်အပြောင်းအလဲနဲ့ဥပမာ -
<?php
$array = range(1, 1000000); // ကြီးမားသောခင်းကျင်း
$chunk_size = 50000; // 每批次ကိုင်တွယ်ဖြေရှင်းသည် 50000 个အချက်များ
foreach (array_chunk($array, $chunk_size) as $chunk) {
// 逐批ကိုင်တွယ်ဖြေရှင်းသည်အချက်များ,ဥပမာအားဖြင့်, အစပျိုး API မေးမြန်း
file_get_contents("https://m66.net/api/data?data=" . urlencode(json_encode($chunk)));
}
?>
ဤနည်းလမ်းသည်အလွန်အကျွံဒေတာများကိုတစ်ချိန်တည်းတွင်မှတ်ဉာဏ်ထဲသို့ 0 င်ရောက်ခြင်းကိုကာကွယ်နိုင်ပြီးအစီအစဉ်တည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
array_chunk () ကို သုံးသောအခါစွမ်းဆောင်ရည်မြှင့်တင်ခြင်းကိုရှောင်ရှားရန်ကြီးမားသောခင်းကျင်းမှုအမြောက်အများကိုအထူးဂရုပြုသင့်သည်။ စွမ်းဆောင်ရည်ကိုအောက်ပါနည်းလမ်းများဖြင့်အကောင်းဆုံးနည်းလမ်းများကိုအကောင်းဆုံးပြုလုပ်နိုင်သည်။
0 ယ်လိုအားအပေါ်ခင်းကျင်းအစိတ်အပိုင်းများကိုလုပ်ဆောင်ရန် Array_SLICE () ကို သုံးပါ။
မလိုအပ်သောမှတ်ဉာဏ် overhead ကိုရှောင်ရှားရန် Present_Keys Parameter ကိုကျိုးကြောင်းဆီလျော်စွာထားပါ။
အသုတ်တွင်လုပ်ဆောင်သောအချက်အလက်များသည်မှတ်ဥာဏ်အသုံးပြုမှုကိုလျော့နည်းစေသည်။
ဤ optimization method များသည်ကြီးမားသောခင်းကျင်းမှုများကိုပိုမိုထိရောက်စွာလုပ်ဆောင်နိုင်ပြီးစွမ်းဆောင်ရည်ပြ problems နာများကိုမြင့်မားသောဝန်ပြ problems နာများကိုရှောင်ရှားနိုင်စေသည်။