PHP တွင် Array_Chunk သည်အလွန်သေးငယ်သော array များသို့ကြီးမားသော array များသို့ခွဲစိတ်နိုင်သည့်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော် Array Data Volume သည်အလွန်ကြီးမားသည့်အခါ array_chunk ကိုအသုံးပြုပြီး array_chunk ကိုအသုံးပြုခြင်းသည်မှတ်ဥာဏ်လျှံခြင်းသို့မဟုတ်မှတ်ဉာဏ်ကန့်သတ်ချက်အမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။ ဘာဖြစ်လို့လဲဆိုတော့ function က array segmentation အချက်အလက်အားလုံးကိုမှတ်ဉာဏ်ထဲထည့်လို့ပါ။ အကယ်. ခင်းကျင်းမှုသည်ကြီးမားလွန်းပါက PHP သည်မှတ်ဉာဏ်ကန့်သတ်ချက်ပြ problem နာကိုဖြစ်ပေါ်စေသည်။
ဤဆောင်းပါးသည်ခင်းကျင်းမှုတစ်ခုလုံးကိုဒေတာကို ဖြတ်. လှမ်းခြင်းအားဖြင့်တစ်ပြိုင်နက်တည်းတွင်မွေ့မှတ်ထားမှုကိုရှောင်ရှားရန်ထိရောက်သောဖြေရှင်းချက်ကိုမျှဝေပါမည်။
ပထမ ဦး စွာ Array_chunk function ကိုအတိုချုပ်နားလည်ကြပါစို့။ အဆိုပါ function ကိုအရွယ်အစားသေးငယ်တဲ့အရွယ်အစားအမျိုးမျိုးကိုအရွယ်အစားသေးငယ်တဲ့သေးငယ်တဲ့ arrays သို့ခွဲခြားရန်ဖြစ်ပါတယ် (နောက်ဆုံးခင်းကျင်းသတ်မှတ်ထားသောအရွယ်အစားနည်းပါးလာမဟုတ်လျှင်) ။ ၎င်း၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
array array_chunk ( array $array , int $size , bool $preserve_keys = false )
$ array : ခွဲခြားခံရဖို့ခင်းကျင်း။
$ အရွယ်အစား - သေးငယ်တဲ့ array တစ်ခုစီ၏အရွယ်အစား။
$ Presentify_Keys : မူရင်းခင်းကျင်းမှု၏သော့ချက်အမည်ကိုသိမ်းထားသင့်သည်ဖြစ်စေ။
ဥပမာအားဖြင့်ကျွန်ုပ်တို့တွင် Element 1000 ကျယ်ပြန့်စွာတပ်ဆင်ထားပြီး၎င်းကိုအရွယ်အစားသေးငယ်သော array များထဲသို့ခွဲရန် array_chunk function ကိုအသုံးပြုသည်ဆိုပါစို့။
$array = range(1, 1000);
$chunked = array_chunk($array, 100);
print_r($chunked);
ဤကုဒ်သည် ဒေါ်လာ အသေးသုံးမှု 10 ခုကိုခွဲဝေပေးလိမ့်မည်။
အကယ်. သင်သည်မှတ်ဉာဏ်ကန့်သတ်ချက်များနှင့်ကြုံတွေ့ရပါကများသောအားဖြင့်ဒေတာပမာဏသည်ကြီးမားပြီး PHP သည်အချက်အလက်အားလုံးကိုတစ်ပြိုင်တည်းလုပ်ဆောင်ခြင်းမရှိပါ။ ဤပြ problem နာကိုဖြေရှင်းရန်ဤနေရာတွင်ပိုမိုကောင်းမွန်စေရန်နည်းလမ်းများစွာရှိသည်။
မီးစက်တစ်ခုသည်ဒေတာများကိုတစ်ဆင့်ပြီးတစ်ဆင့်ရရန်နည်းလမ်းတစ်ခုဖြစ်သည်။ ၎င်းသည်အချက်အလက်အားလုံးကိုမှတ်ဉာဏ်သို့မထည့်သွင်းနိုင်သော်လည်းတန်ဖိုးအသစ်တစ်ခုကိုထုတ်ပေးသည်။ အလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုကိုရှောင်ရှားရန်အတွက် Array Data ၏ခြေလှမ်းအဆင့်ကိုဖတ်ရန်နှင့်လုပ်ဆောင်ရန်အတွက်မီးစက်ကိုသုံးနိုင်သည်။
function chunkGenerator($array, $size) {
$chunk = [];
foreach ($array as $key => $value) {
$chunk[] = $value;
if (count($chunk) == $size) {
yield $chunk;
$chunk = [];
}
}
if (!empty($chunk)) {
yield $chunk;
}
}
// နမူနာဒေတာ
$array = range(1, 10000);
// block-by-block processing အတွက်မီးစက်ကိုသုံးပါ
foreach (chunkGenerator($array, 1000) as $chunk) {
// တစ်ခုချင်းစီကိုပိတ်ပင်တားဆီးမှုများအတွက်လုပ်ငန်းစဉ်အချက်အလက်
// ဒီမှာအစားထိုးနိုင်ပါတယ် URL,ကဲ့သို့:
// $chunk = array_map(function($item) { return str_replace('example.com', 'm66.net', $item); }, $chunk);
print_r($chunk);
}
အထက်ဖော်ပြပါကုဒ်သည်သေးငယ်သော array တစ်ခုစီကို chunkgenerator function မှတဆင့်တဖြည်းဖြည်းထုတ်လုပ်သည်။
အချက်အလက်ပမာဏသည်အထူးသဖြင့်ကြီးမားပြီးမီးစက်ကပင်ပြ the နာကိုထိထိရောက်ရောက်မဖြေရှင်းနိုင်ပါကအချက်အလက်များကိုဖိုင်အပြားသို့ခွဲထုတ်ရန်နှင့်ဖိုင်မှအချက်အလက်များဖတ်ရန်စဉ်းစားနိုင်သည်။ ၎င်းသည်အပြည့်အဝမှတ်ဉာဏ်ထဲသို့အပြည့်အဝမတင်နိုင်သည့်ကြီးမားသော datasets များနှင့်အလုပ်လုပ်သည်။
$file = 'large_data.txt';
$handle = fopen($file, 'r');
$chunkSize = 1000;
$chunk = [];
while (($line = fgets($handle)) !== false) {
$chunk[] = $line;
if (count($chunk) == $chunkSize) {
// လက်ရှိပိတ်ပင်တားဆီးမှုဒေတာဖြစ်စဉ်ကို
// ဒီမှာအစားထိုးနိုင်ပါတယ် URL,ကဲ့သို့:
// $chunk = array_map(function($item) { return str_replace('example.com', 'm66.net', $item); }, $chunk);
print_r($chunk);
$chunk = [];
}
}
if (!empty($chunk)) {
// ဒေတာ၏နောက်ဆုံးအပိုင်းအစဖြစ်စဉ်ကို
print_r($chunk);
}
fclose($handle);
ဤနည်းလမ်းသည်ဖိုင်လိုင်းကိုလိုင်းဖြင့်ဖတ်ခြင်းနှင့်မှတ်ဉာဏ်တွင်အချက်အလက်များကိုသာဆက်လက်ထိန်းသိမ်းခြင်းအားဖြင့်အလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုကိုရှောင်ရှားသည်။
သင့်တွင်စနစ်အရင်းအမြစ်အလုံအလောက်ရှိလျှင်, တစ်ကြိမ်တွင်ကြီးမားသောဒေတာများကိုကိုင်တွယ်ရန်လိုအပ်ပါက PHP ၏မှတ်ဉာဏ်ကန့်သတ်ချက်ကိုခေတ္တတိုးမြှင့်ရန်သင်စဉ်းစားနိုင်သည်။ Memory_Limit ကို php.ini ဖိုင်တွင်သတ်မှတ်နိုင်သည်, သို့မဟုတ် ini_set မှတစ်ဆင့်ကုဒ်တွင် dynamically set ကိုသတ်မှတ်နိုင်သည်
ini_set('memory_limit', '512M'); // ပိုမိုမြင့်မားသောမှတ်ဉာဏ်ကန့်သတ်ထား
$array = range(1, 1000000);
$chunked = array_chunk($array, 1000);
သို့သော် ကျေးဇူးပြု. မှတ်သားပါ။ ရေရှည်တွင် Memory စားသုံးမှုကိုလျှော့ချရန်ပိုမိုကောင်းမွန်သည့် algorithms များကိုပိုမိုအသုံးပြုသင့်သည်။
Array_Crakunk function သည်အချက်အလက်ကြီးများကိုထုတ်လုပ်သည့်အခါမှတ်ဥာဏ်လျှံလျှပ်စစ်ပြ problems နာများဖြစ်ပေါ်စေသည်။ ဤပြ problem နာကိုဖြေရှင်းရန်သော့ချက်မှာဒေတာအားလုံးကိုမှတ်ဉာဏ်ထဲသို့မပို့စေရန်ဖြစ်သည်။ မီးစက်ကိုသုံးခြင်း, ဖိုင်များသိုလှောင်ခြင်းသို့မဟုတ်သင့်လျော်စွာမှတ်ဉာဏ်ကန့်သတ်ခြင်းများကိုသင့်လျော်စွာညှိခြင်း,
ဤနည်းလမ်းများသည် array_chunk ကို သုံးသောအခါမှတ်ဥာဏ်ကန့်သတ်ပြ problem နာကိုဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်။ အကယ်. သင့်တွင်အခြား optimization အကြံပြုချက်များရှိပါကသို့မဟုတ်ကွဲပြားခြားနားသောအခြေအနေများနှင့်ကြုံတွေ့ရပါက ကျေးဇူးပြု. မျှဝေပါ။