ကြီးမားသောဖိုင်များကိုပြုပြင်သည့်အခါ hash တွက်ချက်မှုများအတွက်ဖိုင်တစ်ခုလုံးကိုတိုက်ရိုက်ဖတ်ရှုခြင်းကမှတ်ဉာဏ်များစွာကိုယူဆောင်လာပြီးမှတ်ဉာဏ်မလုံလောက်မှုကိုပင် ဦး ဆောင်လမ်းပြလိမ့်မည်။ ကြီးမားသောဖိုင်များကိုထိရောက်စွာလုပ်ဆောင်ရန် PHP သည် hash_update_stram () function ကိုထောက်ပံ့ပေးသည်။ ဤနည်းအားဖြင့်ဖိုင်ကိုဖတ်နေစဉ် HALH တန်ဖိုးကိုတွက်ချက်နိုင်ပြီးဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်းမှတ်တမ်းတင်ခြင်းကိုရှောင်ရှားနိုင်သည်။
hash_update_stream () သည် PHP ရှိ function တစ်ခုဖြစ်ပြီး stream data ၏ hash တန်ဖိုးကိုမွမ်းမံခြင်းများကိုတိုးပွားစေသည်။ Hash_update () နှင့်ဆင်တူသော်လည်းခြားနားချက်သည် string data ကိုတိုက်ရိုက်လုပ်ဆောင်မည့်အစား Stream အရင်းအမြစ်ကိုထည့်သွင်းခြင်းဟုလက်ခံသည်။ ဤနည်းအားဖြင့်သင်သည်ဒေတာအမြောက်အများကို၎င်းကိုမှတ်ဉာဏ်ထဲသို့မထည့်ဘဲလုပ်ဆောင်နိုင်သည်။
hash_update_stram () function ကိုအသုံးပြုသောအခါဖိုင်စီးကိုပထမဆုံးဖွင့်ပြီးဖိုင်အတွက် hash အခြေအနေကိုဖန်တီးရန်လိုအပ်သည်။ ထို့နောက်ဖိုင်၏ contents အချို့ကိုချွေနိုင်သည်။
hash_update_stream () ကို အသုံးပြု. ကြီးမားသောဖိုင်များကို incremental files များကို incremingal files များအတွက်အခြေခံအဆင့်များမှာ -
hash အခြေအနေကိုစတင်ရန်:
ပထမ ဦး စွာ Hash အခြေအနေကိုစတင်ရန် hash_init () function ကိုသုံးပါ။ SHA256 သို့မဟုတ် MD5 ကဲ့သို့သောထောက်ပံ့ထားသောဆေးထည့်ထားသော algorithm ကိုသင်ရွေးချယ်နိုင်သည်။
$hash_algorithm = 'sha256'; // Hashing algorithm ကိုရွေးချယ်ပါ
$context = hash_init($hash_algorithm);
ဖိုင်စီးကိုဖွင့်ပါ
ဖိုင်ကိုဖွင့ ်. ဖိုင်စီးကိုရယူပါ။
$file_path = 'path_to_large_file.txt'; // ကြီးမားသောဖိုင်လမ်းကြောင်းနှင့်အစားထိုးပါ
$file_stream = fopen($file_path, 'rb');
if (!$file_stream) {
die("ဖိုင်ကိုဖွင့ ်. မရပါ!");
}
incrementally Hash:
ဖိုင်စီး၏အချက်အလက်များကိုလုပ်ဆောင်ရန် hash_update_stream () function ကိုသုံးပါ။ ဖိုင်၏ contents များကို batches နှင့် hash တန်ဖိုးကိုမွမ်းမံနိုင်သည်။
while (!feof($file_stream)) {
$data = fread($file_stream, 8192); // တစ်ခုချင်းစီကိုဖတ်ပါ8KBအချက်များ
hash_update_stream($context, $data);
}
နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ။
ဖိုင်ကိုဖတ်ပြီးနောက်နောက်ဆုံး hash တန်ဖိုးကိုရရှိရန် hash_final () function ကိုသုံးပါ။
$final_hash = hash_final($context);
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: " . $final_hash . PHP_EOL;
ဖိုင်စီးကိုပိတ်ပါ
နောက်ဆုံးအနေဖြင့်ဖိုင်စီးကိုပိတ်ရန်မမေ့ပါနှင့်။
fclose($file_stream);
<?php
// Hashing algorithm ကိုရွေးချယ်ပါ
$hash_algorithm = 'sha256';
$context = hash_init($hash_algorithm);
// ဖိုင်စီးကိုဖွင့်ပါ
$file_path = 'path_to_large_file.txt'; // ကြီးမားသောဖိုင်လမ်းကြောင်းနှင့်အစားထိုးပါ
$file_stream = fopen($file_path, 'rb');
if (!$file_stream) {
die("ဖိုင်ကိုဖွင့ ်. မရပါ!");
}
// incremental update ကို hash တန်ဖိုးကို
while (!feof($file_stream)) {
$data = fread($file_stream, 8192); // တစ်ခုချင်းစီကိုဖတ်ပါ8KBအချက်များ
hash_update_stream($context, $data);
}
// နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
$final_hash = hash_final($context);
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: " . $final_hash . PHP_EOL;
// ဖိုင်စီးကိုပိတ်ပါ
fclose($file_stream);
?>
မှတ်ဉာဏ်စွမ်းဆောင်ရည် - Hash_update_stream () function ကိုအသုံးပြုသောအခါ၎င်းသည်ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့မထည့်သော်လည်းဖိုင်တစ်ခုလုံးကိုမွမ်းမံခြင်းဖြင့်ဖိုင်ကိုဖတ်ရှုနိုင်ပါသည်။
ဖိုင်၏အရွယ်အစားကိုဖတ်ပြီးသည့်အရွယ်အစား - ဖတ်ပြီးသည့်အရွယ်အစား ( Fread ၏ဒုတိယ pareterate () ) ၏အရွယ်အစားအရသိရသည်ညှိနိုင်သည်။ ယေဘုယျအားဖြင့်ပြောရလျှင် 8KB မှ 64KB သည် file size နှင့် hardware အခြေအနေများအပေါ် အခြေခံ. အကောင်းဆုံးသောကျိုးကြောင်းဆီလျော်သောအကွာအဝေးတစ်ခုဖြစ်သည်။
အမှားကိုင်တွယ်ခြင်း - အမှန်တကယ် applications များအရဖိုင်များကိုဖတ်ရှုခြင်းအမှားများကိုဖွင့်ရန်သို့မဟုတ်ဖတ်ရန်အဖုပြုရန်ပျက်ကွက်ခြင်းကဲ့သို့သောဖိုင်ဖတ်ခြင်းအမှားများကိုကိုင်တွယ်ရန်ဂရုပြုသင့်သည်။
hash_update_stream () function သည်ကြီးမားသောဖိုင်များအတွက် hash တွက်ချက်မှုများကိုကိုင်တွယ်ရန်အလွန်လက်တွေ့ကျတဲ့ကိရိယာတစ်ခုဖြစ်သည်။ 4 င်းတို့သည် hash တန်ဖိုးများကို streaming လုပ်ခြင်းဖြင့်အဆင့်ဆင့်တွက်ချက်မှုကိုအဆင့်ဆင့်တွက်ချက်ခြင်း, ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့ 0 င်ရောက်ခြင်းပြ problem နာကိုရှောင်ကြဉ်ရန်ကူညီနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သောပိတ်ပင်တားဆီးမှုအရွယ်အစားနှင့် incremental update များဖြင့် memory-Limited ပတ်ဝန်းကျင်တွင်လိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်ထားသောကြီးမားသောဖိုင်များ၏ hash ကိုသင်ထိထိရောက်ရောက်တွက်ချက်နိုင်သည်။