PHP တွင်ဖိုင်တစ်ခု၏ hash တန်ဖိုးကိုတွက်ချက်ခြင်းသည်ပုံမှန်လည်ပတ်မှုတစ်ခုဖြစ်သည်။ သေးငယ်သောဖိုင်များအတွက် hash_file () ကို အသုံးပြုခြင်းသည်အလွန်အလိုလိုသိ။ အကျိုးရှိသည်။ သို့သော်ဤနည်းစနစ်များ၏စွမ်းဆောင်ရည်သည်အလွန်ကြီးမားသောဖိုင်များနှင့်ရင်ဆိုင်ရသောအခါအလှည့်အပြောင်းတစ်ခုဖြစ်နိုင်သည်။ စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန် hash_update_stream () လုပ်ဆောင်ချက်သည်ပိုမိုထိရောက်သောဖြေရှင်းချက်ကိုပေးသည်။ ယနေ့ကျွန်ုပ်တို့သည် Hash_update_stram () function ကိုအတိမ်အနက်ကိုလေ့လာပြီးစူပါကြီးမားသောဖိုင်များနှင့်ဆက်ဆံရာတွင်စွမ်းဆောင်ရည်တိုးတက်မှုများကိုလေ့လာသုံးသပ်ပါမည်။
ဖိုင်များနှင့်အတူအလုပ်လုပ်သည့်အခါ (ဥပမာ - ဖိုင်အနည်းငယ်ကဲ့သို့သောဖိုင်အနည်းငယ်ကဲ့သို့) တွင် hash တန်ဖိုးများတွက်ချက်ခြင်းလုပ်ငန်းသည်မှတ်ဉာဏ်နှင့် CPU အရင်းအမြစ်များကိုစားသုံးနိုင်သည်။ PHP တွင်ပါ 0 င်သော hash_file () function ကိုအသုံးပြုရန်လွယ်ကူသော်လည်း Super-Super-supers များအတွက်၎င်းသည်ဖိုင်ကိုမှတ်ဉာဏ်သို့လုံးလုံးဖတ်လိမ့်မည်။ ဤပြ problems နာများကိုရှောင်ရှားရန် Hash_update_stream () သည် funks များတွင်ဖိုင်များကိုဖတ်ရှုနိုင်စွမ်းကိုပေးသည်။
hash_update_stream () သည် PHP 5.1.2 တွင်မိတ်ဆက်ပေးသော function တစ်ခုဖြစ်သည်။ hash_file () သည်ဖိုင်တစ်ခုလုံးကိုတစ်ချိန်တည်းတွင်တင်သောကြောင့် Hash_update_stream () သည်ဒေတာလုပ်ကွက် () သည် ဖိုင်ဒေတာပိတ်ပင်တားဆီးမှုကိုဘွတ်ကင်ဖြင့်ဖတ်နိုင်သည်,
<?php
$hashContext = hash_init('sha256'); // Hash အခြေအနေကိုစတင်ပါ
$stream = fopen('largefile.txt', 'rb'); // ဖိုင်ကြီးတစ်ခုဖွင့်ပါ
// ဖိုင်များကိုဖတ်ပါ။
while (!feof($stream)) {
$buffer = fread($stream, 8192); // တစ်ခုချင်းစီကိုဖတ်ပါ 8KB
hash_update_stream($hashContext, $buffer); // update hash
}
fclose($stream); // ဖိုင်စီးကိုပိတ်ပါ
$hashValue = hash_final($hashContext); // နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: $hashValue";
?>
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် hash_update_stream () ဖိုင်ပါ 0 င်မှုများကိုပိတ်ဆို့ခြင်းနှင့် Hash တန်ဖိုးကိုအချိန်မှန်သို့မွမ်းမံခြင်းဖြင့်ဖတ်ရန် Hash_update_Stream () ကို အသုံးပြုသည်။ အတုံးများတွင်ဖိုင်ကြီးများကိုလုပ်ဆောင်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်မှတ်ဉာဏ်အသုံးပြုမှုကိုသိသိသာသာလျှော့ချပြီးဖိုင်အမျိုးအစားအပြောင်းအလဲအတွက်စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်။
Hash_update_stream ၏စွမ်းဆောင်ရည်ကိုအကဲဖြတ်ရန် () အလွန်ကြီးမားသောဖိုင်များကိုကိုင်တွယ်သည့်အခါ၎င်းကို Hash_File () နှင့်နှိုင်းယှဉ်နိုင်သည်။ ကျွန်ုပ်တို့တွင် 10 GB LargeFilePile.txt အရွယ်အစားရှိသောဖိုင်တစ်ခုရှိသည်ဆိုပါစို့။ ဖိုင်၏ hash ကိုတွက်ချက်ရန်နှင့်သူတို့၏စွမ်းဆောင်ရည်ကိုနှိုင်းယှဉ်ရန်နည်းလမ်းနှစ်မျိုးကိုအသုံးပြုသည်။
$hashValue = hash_file('sha256', 'largefile.txt');
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: $hashValue";
ဤချဉ်းကပ်မှု၏အဆင်မပြေမှုမှာဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့ 0 င်ရောက်စေသည်။ ၎င်းသည်ကြီးမားသောဖိုင်များအတွက်အလွန်မတတ်နိုင်သောကြောင့်ဖြစ်သည်။ အကယ်. ဖိုင်သည်အလွန်ကြီးလွန်းပါက၎င်းသည်မှတ်ဥာဏ်လျှံကိုပင်ဖြစ်ပေါ်စေနိုင်သည်။
$hashContext = hash_init('sha256');
$stream = fopen('largefile.txt', 'rb');
while (!feof($stream)) {
$buffer = fread($stream, 8192);
hash_update_stream($hashContext, $buffer);
}
fclose($stream);
$hashValue = hash_final($hashContext);
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: $hashValue";
ဖိုင်ပိတ်ပင်တားဆီးမှုကိုပိတ်ပင်တားဆီးမှုဖြင့်ဖတ်ခြင်းအားဖြင့် hash_update_stream () နည်းလမ်းသည် Memory အသုံးပြုမှုကိုသိသိသာသာလျော့နည်းစေသည်။ အထူးသဖြင့်ဖိုင်များသည် (ဥပမာ 10 GB သို့မဟုတ်ထိုထက်မက) သည်ကြီးမားသောအခါမှတ်ဥာဏ်အသုံးပြုမှုကိုအလွန်လျော့နည်းစေသည်။
Memory Optimization : hash_update_stream () ဖိုင်များကိုပိတ်ဆို့ခြင်းထက်ဖိုင်များကိုပိတ်ဆို့ခြင်းထက်ဖိုင်ပိတ်ပင်တားဆီးမှုကိုဘွတ်ကင်ဖြင့်ဖတ်သည်။ ဤနည်းအားဖြင့်ကြီးမားသောဖိုင်များကိုပြုပြင်သည့်အခါမှတ်ဥာဏ်အသုံးပြုမှုကိုအလွန်ကောင်းမွန်စွာပြုလုပ်နိုင်သည်။
I / O Performance : hash_update_stream ကိုအသုံးပြုတဲ့အခါ () သေးငယ်တဲ့ဒေတာသေးသေးလေးကိုတစ်ကြိမ်သာဖတ်ပြီးဖိုင်စီးကိုပိုပြီးထိရောက်စွာဖတ်ရှုခြင်း,
ခိုင်မာသည့်အလိုက်အသင့်ပြင်ဆင်ထားမှု - Hash_File () , hash_update_stream () နှင့်မတူဘဲဖိုင်များအတွက်ကန့်သတ်ထားသည့်မည်သည့် stream အမျိုးအစားကိုမဆိုကိုင်တွယ်နိုင်သည်။ ၎င်းသည် streaming data funks များတွင် streaming data များပြုလုပ်သောအခြားအခြေအနေများတွင်အလွန်အသုံးဝင်စေသည်။
Hash_update_stream () သည်အောက်ပါအခြေအနေများအတွက်အထူးသဖြင့်သင့်တော်သည်။
ဖိုင်အချိုတင်ခြင်း Verification : ဖိုင်တွဲကြီးများကိုကိုင်တွယ်သည့်အခါဖိုင်၏သမာဓိကိုစစ်ဆေးရန်တင်ထားသောဖိုင်များကိုကျွန်ုပ်တို့များသောအားဖြင့်ပြုလုပ်နိုင်သည်။ Hash_update_stream () ကို အသုံးပြု. Memory သုံးစွဲမှုကိုလျှော့ချခြင်းနှင့်အပြောင်းအလဲမြန်နှုန်းကိုတိုးတက်အောင်ပြုလုပ်ခြင်းများကိုလျှော့ချရန် Hash_update_stream () ကို အသုံးပြုပါ။
ဖြန့်ဝေသောသိုလှောင်မှု - ဖြန့်ဖြူးထားသောသိုလှောင်မှုစနစ်တွင်ကြီးမားသောဖိုင်များကိုအငှားထားရန်နှင့်ပိတ်ပင်တားဆီးမှုတစ်ခုစီ၏ hash တန်ဖိုးကိုတွက်ချက်ရန်လိုအပ်သည်။ ယခုအချိန်တွင် Hash_update_stream () သည် streaming တွက်ချက်မှုများကိုထောက်ပံ့ရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။
Real-time data procession : log file analysis သို့မဟုတ် Real-time data stream လုပ်ခြင်းကဲ့သို့သော streaming data processing လုပ်ခြင်းများတွင် log file analysis သို့မဟုတ်အချိန်မှန်ဒေတာများကိုပြုပြင်ခြင်းကဲ့သို့သော Hash_update_stream () ကိုထိရောက်သော hash computing tool တစ်ခုအဖြစ်အသုံးပြုနိုင်သည်။
Hash_Update_Stream () သည် အထူးသဖြင့်မှတ်ဉာဏ်စီမံခန့်ခွဲမှုနှင့် I / O processing တွင်စူပါကြီးမားသောဖိုင်များကိုကိုင်တွယ်သောအခါစွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေသည်။ ဖိုင်ကိုအတုံးအတွင်းဖတ်ရှုခြင်းဖြင့် hash တန်ဖိုးကိုတဖြည်းဖြည်းချင်းအသစ်ပြောင်းခြင်းဖြင့် Hash_update_stream () သည် မှတ်ဥာဏ်သုံးစွဲမှုကိုလျှော့ချပြီးဖိုင်တစ်ခုလုံးကိုတစ်ချိန်တည်းတွင်တင်ရန်ပြ problem နာကိုရှောင်ရှားနိုင်သည်။ ထို့ကြောင့်ကြီးမားသောဖိုင်များကိုကိုင်တွယ်ရန်လိုအပ်သည့်အခြေအနေများအတွက်အလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။