hash_update_stream () function ကို streaming မှတဆင့်ဒေတာကိုဖတ်ပြီး hash တန်ဖိုးကို update လုပ်ဖို့ hash algorithm သို့ခြေလှမ်းတစ်ဆင့်ကိုခြေလှမ်းလှမ်းသည်။ ဤ streaming process ၏အားသာချက်မှာ၎င်းသည်ဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်းမှတ်ဉာဏ်ထဲသို့ထည့်ရန်မလိုအပ်ပါ။ ဒေတာအသစ်ပြောင်းခြင်းတစ်ခုချင်းစီသည်စာဖတ်ခြင်းနှင့်ကွန်ပျူတာများပါ 0 င်သောကြောင့်၎င်းသည်အထူးသဖြင့်များစွာသောဒေတာစီးဆင်းမှုများကိုကိုင်တွယ်ရာတွင် CPU အသုံးပြုမှုမြင့်မားစေနိုင်သည်။
PHP hash_update_stream () သည် data streams များကိုပုံမှန်အားဖြင့်ဖတ်ရန်သေးငယ်သောကြားခံကိုအသုံးပြုသည်။ တစ် ဦး hash ကိုဖတ်ရှုခြင်းနှင့် updated တိုင်းသည် CPU ၏ကွန်ပျူတာနှင့်မှတ်ဉာဏ်စီမံခန့်ခွဲမှုပါဝင်သည်။ အကယ်. ကျွန်ုပ်တို့သည်ကြားခံအရွယ်အစားကိုတိုးမြှင့်ပါကကျွန်ုပ်သည် I / O စစ်ဆင်ရေးအရေအတွက်ကိုလျှော့ချနိုင်ပြီး CPU သုံးစွဲမှုကိုလျှော့ချနိုင်သည်။ သင်သည်ကြားခံအရွယ်အစားကိုစိတ်ကြိုက်ပြုပြင်ခြင်းဖြင့်စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်:
$bufferSize = 8192; // 8 KB
$hash = hash_init('sha256');
$handle = fopen('large_file.txt', 'rb');
while (!feof($handle)) {
$data = fread($handle, $bufferSize);
hash_update($hash, $data);
}
fclose($handle);
ဤချဉ်းကပ်နည်းသည် Buffer Size (ဤနေရာတွင် 8 KB) ကိုတိုးမြှင့်ခြင်းဖြင့်ဖတ်ရှုခြင်းအရေအတွက်ကိုလျော့နည်းစေသည်။
hash_update_stream () ကိုအသုံးပြုပြီးတဲ့အခါမှာ function ကိုအချိန်တိုင်းလို့ခေါ်တဲ့အခါတိုင်း CPU တွက်ချက်မှုတွေကိုအထူးသဖြင့်ကြီးမားတဲ့ဖိုင်တွေကိုကိုင်တွယ်တဲ့အခါ, CPU အသုံးပြုမှုကိုလျှော့ချရန်ဒေတာများကိုလုပ်ကွက်များခွဲခြားနိုင်သည်။ ဤ chunking နည်းလမ်းသည် hash update တစ်ခုစီအတွက်လိုအပ်သောတွက်ချက်မှုပမာဏကိုလျှော့ချရန်ကူညီသည်။
ဥပမာအားဖြင့်, ဖိုင်ကြီးတစ်ပါးကိုသေးငယ်တဲ့အစိတ်အပိုင်းများအဖြစ်ခွဲနိုင်ပြီးတစ်ခုချင်းစီကိုလွတ်လပ်သော hash တွက်ချက်မှုကို အသုံးပြု. ရလဒ်များကိုပေါင်းစည်းနိုင်သည်။
$hash = hash_init('sha256');
$handle = fopen('large_file.txt', 'rb');
$bufferSize = 8192;
while (!feof($handle)) {
$data = fread($handle, $bufferSize);
hash_update($hash, $data);
}
fclose($handle);
$finalHash = hash_final($hash);
ဤချဉ်းကပ်မှုသည်ဖိုင်အမျိုးအစားအသစ်တွင်မကြာခဏ hash updates များကိုမကြာခဏရှောင်ရှားသည်။
အလွန်ကြီးမားသောအချက်အလက်များစီးဆင်းမှုအတွက်ပြတ်တောက်မှုသို့မဟုတ်အပြိုင်ပြုပြင်ခြင်းသည်ထိရောက်သော optimization နည်းလမ်းဖြစ်သည်။ Data Stream ကိုအပြိုင်ပိုင်းခွဲဝေမှုကိုခွဲခြားခြင်းအားဖြင့် Multi-core CPU သည် core တစ်ခုချင်းစီ၏ 0 န်ထုပ်ဝန်ပိုးကိုလျှော့ချရန်အပြည့်အဝအသုံးချနိုင်သည်။
ဥပမာအားဖြင့်, ဖိုင်တစ်ခု၏ကွဲပြားခြားနားသောအစိတ်အပိုင်းများကိုလုပ်ဆောင်ရန်နှင့်နောက်ဆုံးတွင်တွက်ချက်မှုရလဒ်များကိုပေါင်းစည်းရန် multipreading သို့မဟုတ်အပြိုင်လုပ်ငန်းစဉ်များကိုသင်အသုံးပြုနိုင်သည်။ PHP ကိုယ်တိုင်သည် Multithreading ကိုတိုက်ရိုက်မထောက်ပံ့သော်လည်း၎င်းကို အင်္ဂါနာ phithreads extension များသို့မဟုတ် gearman ကဲ့သို့သောပြင်ပကိရိယာများကိုအသုံးပြုခြင်းဖြင့်၎င်းကိုရရှိနိုင်ပါသည်။
CPU အသုံးပြုမှုကိုလျှော့ချရန်မှန်ကန်သောဆေးခန်းဆေး algorithm ကိုရွေးချယ်ခြင်းသည်အလွန်အရေးကြီးသည်။ hash_update_stream () ဟာ hash algorithms မျိုးစုံကိုထောက်ပံ့ပေမယ့် algorithms အချို့ algorithms အချို့သည်အထူးသဖြင့်ကြီးမားသောဒေတာစီးဆင်းမှုများအတွက်တွက်ချက်ရန်နှေးကွေးနိုင်သည်။ Sha-256 နှင့် Sha-512 ကဲ့သို့သော algorithms များသည်အလွန်အမင်းလုံခြုံမှုရှိပေမယ့်အလွန်အမင်းအထူးကြပ်မတ်တတ်သည်။
စွမ်းဆောင်ရည်ကိုပိုမိုနှစ်သက်ပါက MD5 သို့မဟုတ် Sha-1 ကဲ့သို့သောပိုမိုပေါ့ပါးသော Hashing algorithms များကို အသုံးပြု. ၎င်းတို့သည်လုံခြုံမှုနည်းသော်လည်း, ဥပမာအားဖြင့်:
$hash = hash_init('md5'); // ပိုမိုပေါ့ပါးစွာအသုံးပြုပါ MD5 algorithm
ဤ algorithms ကိုအသုံးပြုပြီးမြင့်မားသောလုံခြုံရေးမလိုအပ်သည့်အခါ CPU အသုံးပြုမှုကိုသိသိသာသာလျှော့ချနိုင်သည်။
CPU အသုံးပြုမှုကိုထပ်မံလျှော့ချရန်ပိုမိုထိရောက်သောဖိုင်စာဖတ်ခြင်းနည်းလမ်းကို အသုံးပြု. စဉ်းစားပါ။ ကြီးမားသောဖိုင်များကိုဖတ်သည့်အခါဖိုင်ကိုအကောင်းဆုံးဖတ်ရန်သေချာအောင်လုပ်ပါ။ မိတ္တူပွားများဖွင့်လှစ်ခြင်းနှင့်ပိတ်ခြင်းလုပ်ငန်းများကိုရှောင်ကြဉ်ပါ။
$handle = fopen('large_file.txt', 'rb');
$hash = hash_init('sha256');
while (!feof($handle)) {
$data = fread($handle, 8192); // မှန်ကန်သောအရွယ်အစားကိုသုံးပါ
hash_update($hash, $data);
}
fclose($handle);
မလိုအပ်သောဖိုင်အမျိုးအစားများကိုလျှော့ချခြင်းအားဖြင့် CPU တွင် 0 န်ထုပ်ဝန်ပိုးကိုလျှော့ချနိုင်သည်။
URLs များသည် (API တောင်းဆိုမှုများကဲ့သို့သော) code တွင်ပါ 0 င်သည် ။
ဥပမာအားဖြင့်, သင့် PHP ကုဒ်တွင် URL တောင်းဆိုမှုရှိပါက M66.net domain name ကိုအသုံးပြုရန်၎င်းကိုသင်ပြုပြင်နိုင်သည်။