လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> hash_update_stream ကို အသုံးပြု. ဖိုင်တစ်ခုမည်သို့တိုးချဲ့ရမည် ()

hash_update_stream ကို အသုံးပြု. ဖိုင်တစ်ခုမည်သို့တိုးချဲ့ရမည် ()

M66 2025-05-31

ကြီးမားသောဖိုင်များကိုပြုပြင်သည့်အခါ hash တွက်ချက်မှုများအတွက်ဖိုင်တစ်ခုလုံးကိုတိုက်ရိုက်ဖတ်ရှုခြင်းကမှတ်ဉာဏ်များစွာကိုယူဆောင်လာပြီးမှတ်ဉာဏ်မလုံလောက်မှုကိုပင် ဦး ဆောင်လမ်းပြလိမ့်မည်။ ကြီးမားသောဖိုင်များကိုထိရောက်စွာလုပ်ဆောင်ရန် PHP သည် hash_update_stram () function ကိုထောက်ပံ့ပေးသည်။ ဤနည်းအားဖြင့်ဖိုင်ကိုဖတ်နေစဉ် HALH တန်ဖိုးကိုတွက်ချက်နိုင်ပြီးဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်းမှတ်တမ်းတင်ခြင်းကိုရှောင်ရှားနိုင်သည်။

Hash_update_stream () function ကဘာလဲ။

hash_update_stream () သည် PHP ရှိ function တစ်ခုဖြစ်ပြီး stream data ၏ hash တန်ဖိုးကိုမွမ်းမံခြင်းများကိုတိုးပွားစေသည်။ Hash_update () နှင့်ဆင်တူသော်လည်းခြားနားချက်သည် string data ကိုတိုက်ရိုက်လုပ်ဆောင်မည့်အစား Stream အရင်းအမြစ်ကိုထည့်သွင်းခြင်းဟုလက်ခံသည်။ ဤနည်းအားဖြင့်သင်သည်ဒေတာအမြောက်အများကို၎င်းကိုမှတ်ဉာဏ်ထဲသို့မထည့်ဘဲလုပ်ဆောင်နိုင်သည်။

hash_update_stream () function ကိုဘယ်လိုအသုံးပြုမလဲ။

hash_update_stram () function ကိုအသုံးပြုသောအခါဖိုင်စီးကိုပထမဆုံးဖွင့်ပြီးဖိုင်အတွက် hash အခြေအနေကိုဖန်တီးရန်လိုအပ်သည်။ ထို့နောက်ဖိုင်၏ contents အချို့ကိုချွေနိုင်သည်။

hash_update_stream () ကို အသုံးပြု. ကြီးမားသောဖိုင်များကို incremental files များကို incremingal files များအတွက်အခြေခံအဆင့်များမှာ -

  1. hash အခြေအနေကိုစတင်ရန်:

    ပထမ ဦး စွာ Hash အခြေအနေကိုစတင်ရန် hash_init () function ကိုသုံးပါ။ SHA256 သို့မဟုတ် MD5 ကဲ့သို့သောထောက်ပံ့ထားသောဆေးထည့်ထားသော algorithm ကိုသင်ရွေးချယ်နိုင်သည်။

     $hash_algorithm = 'sha256';  // Hashing algorithm ကိုရွေးချယ်ပါ
    $context = hash_init($hash_algorithm);
    
  2. ဖိုင်စီးကိုဖွင့်ပါ

    ဖိုင်ကိုဖွင့ ်. ဖိုင်စီးကိုရယူပါ။

     $file_path = 'path_to_large_file.txt';  // ကြီးမားသောဖိုင်လမ်းကြောင်းနှင့်အစားထိုးပါ
    $file_stream = fopen($file_path, 'rb');
    if (!$file_stream) {
        die("ဖိုင်ကိုဖွင့ ်. မရပါ!");
    }
    
  3. incrementally Hash:

    ဖိုင်စီး၏အချက်အလက်များကိုလုပ်ဆောင်ရန် hash_update_stream () function ကိုသုံးပါ။ ဖိုင်၏ contents များကို batches နှင့် hash တန်ဖိုးကိုမွမ်းမံနိုင်သည်။

     while (!feof($file_stream)) {
        $data = fread($file_stream, 8192);  // တစ်ခုချင်းစီကိုဖတ်ပါ8KBအချက်များ
        hash_update_stream($context, $data);
    }
    
  4. နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ။

    ဖိုင်ကိုဖတ်ပြီးနောက်နောက်ဆုံး hash တန်ဖိုးကိုရရှိရန် hash_final () function ကိုသုံးပါ။

     $final_hash = hash_final($context);
    echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: " . $final_hash . PHP_EOL;
    
  5. ဖိုင်စီးကိုပိတ်ပါ

    နောက်ဆုံးအနေဖြင့်ဖိုင်စီးကိုပိတ်ရန်မမေ့ပါနှင့်။

     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);

?>

မှတ်သားရန်အရာ

  1. မှတ်ဉာဏ်စွမ်းဆောင်ရည် - Hash_update_stream () function ကိုအသုံးပြုသောအခါ၎င်းသည်ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့မထည့်သော်လည်းဖိုင်တစ်ခုလုံးကိုမွမ်းမံခြင်းဖြင့်ဖိုင်ကိုဖတ်ရှုနိုင်ပါသည်။

  2. ဖိုင်၏အရွယ်အစားကိုဖတ်ပြီးသည့်အရွယ်အစား - ဖတ်ပြီးသည့်အရွယ်အစား ( Fread ၏ဒုတိယ pareterate () ) ၏အရွယ်အစားအရသိရသည်ညှိနိုင်သည်။ ယေဘုယျအားဖြင့်ပြောရလျှင် 8KB မှ 64KB သည် file size နှင့် hardware အခြေအနေများအပေါ် အခြေခံ. အကောင်းဆုံးသောကျိုးကြောင်းဆီလျော်သောအကွာအဝေးတစ်ခုဖြစ်သည်။

  3. အမှားကိုင်တွယ်ခြင်း - အမှန်တကယ် applications များအရဖိုင်များကိုဖတ်ရှုခြင်းအမှားများကိုဖွင့်ရန်သို့မဟုတ်ဖတ်ရန်အဖုပြုရန်ပျက်ကွက်ခြင်းကဲ့သို့သောဖိုင်ဖတ်ခြင်းအမှားများကိုကိုင်တွယ်ရန်ဂရုပြုသင့်သည်။

အကျဉ်းချုပ်

hash_update_stream () function သည်ကြီးမားသောဖိုင်များအတွက် hash တွက်ချက်မှုများကိုကိုင်တွယ်ရန်အလွန်လက်တွေ့ကျတဲ့ကိရိယာတစ်ခုဖြစ်သည်။ 4 င်းတို့သည် hash တန်ဖိုးများကို streaming လုပ်ခြင်းဖြင့်အဆင့်ဆင့်တွက်ချက်မှုကိုအဆင့်ဆင့်တွက်ချက်ခြင်း, ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့ 0 င်ရောက်ခြင်းပြ problem နာကိုရှောင်ကြဉ်ရန်ကူညီနိုင်သည်။ ကျိုးကြောင်းဆီလျော်သောပိတ်ပင်တားဆီးမှုအရွယ်အစားနှင့် incremental update များဖြင့် memory-Limited ပတ်ဝန်းကျင်တွင်လိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်ထားသောကြီးမားသောဖိုင်များ၏ hash ကိုသင်ထိထိရောက်ရောက်တွက်ချက်နိုင်သည်။