လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> hash_update_stream function ကို အသုံးပြု. ကြီးမားသောဖိုင်များကိုလုပ်ဆောင်သောအခါအလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်နည်း။

hash_update_stream function ကို အသုံးပြု. ကြီးမားသောဖိုင်များကိုလုပ်ဆောင်သောအခါအလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်နည်း။

M66 2025-06-11

PHP တွင်ကြီးမားသောဖိုင်များကိုလုပ်ဆောင်သောအခါအလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုပြ the နာကိုကျွန်ုပ်တို့မကြာခဏရင်ဆိုင်ရလေ့ရှိသည်။ အထူးသဖြင့်ဖိုင်တစ်ခု၏ hash တန်ဖိုးကို (ဥပမာ - MD5, Sha1 စသည်) ကိုတွက်ချက်ရန်လိုအပ်ပါကဖိုင်တစ်ခုလုံးကိုတစ်ချိန်တည်းတွင်မှတ်ဉာဏ်ထဲသို့ 0 င်ပါကမှတ်ဉာဏ်အကန့်အသတ်ဖြင့်ဖြစ်ပေါ်စေနိုင်သည်, ဤသို့ရှောင်ရှားရန် PHP သည် hash_update_stream function ကိုထောက်ပံ့ပေးသည်။

1 ။ Hash_update_Stream function ကိုမိတ်ဆက်

Hash_update_stream သည် hash တွက်ချက်မှုများကိုမွမ်းမံရန်အတွက် PHP တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည် Open file stream (stream) ကိုလက်ခံပြီးဖိုင်ပါ 0 င်သည့် contents ပိတ်ဆို့ခြင်းကိုပိတ်ပင်တားဆီးမှုဖြင့်ပြုလုပ်ထားသော hash ကိုအသစ်ပြောင်းသည်။ Loading File Contents ကို Memory သို့တိုက်ရိုက်တိုက်ရိုက်နှိုင်းယှဉ်ခြင်းနှင့်နှိုင်းယှဉ်လျှင် hash_update_stream သည် ကြီးမားသောဖိုင်များကိုအဆင့်ဆင့်အဆင့်ဆင့်လုပ်ဆောင်နိုင်ပြီးမှတ်ဉာဏ်ခြေရာကိုသိသိသာသာလျှော့ချနိုင်သည်။

function ကိုလက်မှတ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 bool hash_update_stream ( resource $context , resource $file_handle [, int $length = 1024 ] )
  • $ Context : ဤသည် hash_init function မှဖန်တီးထားသော hash အခြေအနေ။

  • $ file_handle - ဖိုင်၏အရင်းအမြစ်လက်ကိုင်ကိုများသောအားဖြင့် fopen function မှတဆင့်ရရှိသော။

  • $ အရှည် - အချိန်ကိုဖတ်နေ Bytes အရေအတွက်ကိုဖတ်ပါ, ပုံမှန်အားဖြင့် 1024 bytes (1kb) ဖြစ်သည်။

2 ။ ကြီးမားသောဖိုင်များပြုပြင်ခြင်းဆိုင်ရာမှတ်ဉာဏ်ပြ problem နာကိုဖြေရှင်းပါ

ကျွန်ုပ်တို့တွင်ဖိုင်ကြီးကြီးတစ်ခုရှိပြီး MD5 hash ကိုတွက်ချက်ရန်လိုအပ်သည်ဆိုပါစို့။ ရိုးရာချဉ်းကပ်နည်းသည်ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့ဖတ်ရန်နှင့် hash တန်ဖိုးကိုတွက်ချက်ရန်ဖြစ်သည်။ သို့သော်ကြီးမားသောဖိုင်များအတွက်ဤအလေ့အကျင့်သည်မှတ်ဥာဏ်လျှံသို့ ဦး တည်နိုင်သည်။

 $file = 'path/to/largefile.txt'; // အမှန်တကယ်ဖိုင်လမ်းကြောင်းနှင့်အစားထိုးလိုက်ပါ
$context = hash_init('md5');

$handle = fopen($file, 'rb');
if ($handle) {
    while (!feof($handle)) {
        $buffer = fread($handle, 1024); // ဖတ်1KBအချက်များ
        hash_update($context, $buffer);
    }
    fclose($handle);
}

$hash = hash_final($context);
echo "File MD5 hash: " . $hash;

အပေါ်ကပြထားတဲ့အတိုင်းဖိုင်ကို funks ထဲမှာဖတ်ပြီး hash_update သုံးပြီး hash value ကို update လုပ်တယ်။ ဤနေရာတွင် hash_update ကို သေးငယ်သောလုပ်ကွက်များအတွက်တွက်ချက်သည်။ သို့သော်မှတ်ဉာဏ်အသုံးပြုမှုကိုပိတ်ပင်တားဆီးမှုအရွယ်အစားပေါ် မူတည်. ဆုံးဖြတ်သည်။

3 ။ Memory အသုံးပြုမှုကိုအကောင်းဆုံးဖြစ်အောင် hash_update_stream ကို သုံးပါ

hash_update ကို တိုက်ရိုက်အသုံးပြုခြင်းနှင့်မတူဘဲ hash_update_stream function သည်ဖိုင်များကိုလက်ဖြင့်ဖတ်ခြင်းမရှိဘဲဖိုင်စီးဆင်းမှုများကိုတိုက်ရိုက်လုပ်ဆောင်ရန်ခွင့်ပြုသည်။

အကောင်းဆုံးကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 $file = 'path/to/largefile.txt'; // အမှန်တကယ်ဖိုင်လမ်းကြောင်းနှင့်အစားထိုးလိုက်ပါ
$context = hash_init('md5');

$handle = fopen($file, 'rb');
if ($handle) {
    while (!feof($handle)) {
        // 每次从文件流中ဖတ်1024bytes နှင့် update ကို hash
        hash_update_stream($context, $handle, 1024);
    }
    fclose($handle);
}

$hash = hash_final($context);
echo "File MD5 hash: " . $hash;

4 ။ hash_update_stream သည်အဘယ်ကြောင့်ပိုမိုထိရောက်သနည်း။

Hash_update_stream ၏အားသာချက်မှာဖိုင်အပိုင်းတိုင်းကိုလက်ဖြင့်ဖတ်ခြင်းမရှိဘဲဖိုင်စီးကိုတိုက်ရိုက်ကိုင်တွယ်နိုင်သည်။ ဤနည်းလမ်းသည် hash တန်ဖိုးများကိုတွက်ချက်သောအခါအစီအစဉ်ကိုမှတ်ဉာဏ်အသုံးပြုမှုကိုထိရောက်စွာလျှော့ချရန်ခွင့်ပြုသည်။

  1. block by block by block : Hash_update_stream သည် ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့တင်ရန်အစားဖိုင်ပိတ်ပင်တားဆီးမှုမှအချက်အလက်များကိုပိတ်ဆို့ခြင်းဖြင့်အချက်အလက်များကိုပိတ်ပင်တားဆီးမှုဖြင့်ဖတ်လိမ့်မည်။

  2. Memory စားသုံးမှုနိမ့်ခြင်း - streaming operations မှတစ်ဆင့်မှတ်ဉာဏ်ခြေရာသည်အလွန်နိမ့်ပြီးလက်ရှိလုပ်ဆောင်နေသောဖိုင်လုပ်ကွက်များကိုသာသိမ်းဆည်းရန်လိုအပ်သည်။

  3. ကြီးမားသောဖိုင်များအတွက်သင့်တော်သည် ။ အလွန်ကြီးမားသောဖိုင်များ (ဥပမာ, GB သို့မဟုတ်ပိုကြီးသော) အတွက်အလွန်ကြီးမားသောဖိုင်များအတွက် hash_update_stream သည်အကောင်းဆုံးဖြစ်သည်။

5 ။ အမှန်တကယ် application အတွက် URL အစားထိုး

လက်တွေ့ကျသော application များအရဝေးလံသောဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်ရန်လိုအပ်သည့်အခြေအနေများကြုံတွေ့ရနိုင်သည်။ URL လိပ်စာတစ်ခုမှထောက်ပြထားသောဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်ရန်လိုသည်ဆိုပါစို့။

 $url = 'http://example.com/largefile.txt'; // နမူနာ URL
$file = fopen($url, 'rb');
if ($file) {
    $context = hash_init('md5');
    while (!feof($file)) {
        hash_update_stream($context, $file, 1024);
    }
    fclose($file);

    $hash = hash_final($context);
    echo "File MD5 hash: " . $hash;
}

သို့သော် URL domain name m66.net ကိုအစားထိုးရန်သင်တောင်းခံသောကြောင့်အထက်ပါ URL သို့ပြောင်းလဲနိုင်သည်။