လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Funks တွင်ဖိုင်များကိုမည်သို့ဖတ်ရှုရမည်နည်း hash ကိုတွက်ချက်နည်း

Funks တွင်ဖိုင်များကိုမည်သို့ဖတ်ရှုရမည်နည်း hash ကိုတွက်ချက်နည်း

M66 2025-06-05

ကြီးမားသောဖိုင်များနှင့်အလုပ်လုပ်သောအခါဖိုင်တစ်ခုလုံးကိုတိုက်ရိုက်ဖတ်ရှုခြင်းနှင့် hash တန်ဖိုးကိုတွက်ချက်ခြင်းကမှတ်ဥာဏ်အလွန်အကျွံသုံးစွဲမှုသည်အလွန်အကျွံအသုံးပြုမှုကိုဖြစ်ပေါ်စေပြီးမှတ်ဉာဏ်မလုံလောက်သည့်အခါအစီအစဉ်ပျက်ပြားစေနိုင်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန် PHP ၏ hash_update_stream function ကို သုံး. file ကို file ထဲတွင်ဖတ်ရန်နှင့် hash တန်ဖိုးကိုအချိန်မှန်တွက်ချက်ရန်သင်အသုံးပြုနိုင်သည်။ ဤတွင်ဖိုင်တစ်ခုလုံးတွင်ဖိုင်ကိုမည်သို့ဖတ်ရမည်ကိုပြသသည့်ဥပမာတစ်ခုမှာဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်းတင်ခြင်းကိုရှောင်ရှားရန်ဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်သည်။

Hash_update_stream ဆိုတာဘာလဲ။

Hash_update_stream function သည် PHP မှအဆင့်မြှင့်တင်မှုများပြုလုပ်ရန် PHP မှပေးသော function တစ်ခုဖြစ်သည်။ Hash_update () function ကိုမတူဘဲ Hash_update_Stream သည် ကြီးမားသောဖိုင်များပြုပြင်ထုတ်လုပ်ရန်အတွက်သင့်လျော်သောဖိုင်စီးဆင်းမှု ( အရင်းအမြစ် ) မှတဆင့် hash တန်ဖိုးများကိုပိတ်ပင်တားဆီးမှုဖြင့်ပိတ်ဆို့ခြင်းဖြင့်ပိတ်ပင်တားဆီးမှုကိုပိတ်ပင်တားဆီးမှုဖြင့်ပိတ်ဆို့ခြင်း။

အခြေခံအဆင့်များ

  1. ဖိုင်စီးကိုဖွင့်ပါ။

  2. hash algorithm ကို hash_init function ကို အသုံးပြု. hash algorithm ကိုစတင်ပါ။

  3. file ကို chunks တွင်ဖတ်ရန် hash_update_stream ကို အသုံးပြု. Real Time အတွက် hash တန်ဖိုးကိုတွက်ချက်ရန်။

  4. ပြီးဆုံးသောအခါ File Stream ကိုပိတ်ပြီးနောက်ဆုံး hash တန်ဖိုးကိုရယူပါ။

နမူနာကုဒ်

 <?php
// Initialization Hashing algorithm,ဒီမှာအသုံးပြုခဲ့သည်SHA-256
$hashAlgorithm = 'sha256';

// ဖိုင်စီးကိုဖွင့်ပါ
$filePath = 'path_to_your_large_file'; // သင်၏ဖိုင်လမ်းကြောင်းနှင့်အစားထိုးပါ
$fileStream = fopen($filePath, 'rb');
if (!$fileStream) {
    die("ဖိုင်ကိုဖွင့ ်. မရပါ");
}

// Hash တွက်ချက်မှုကိုအစပြုပါ
$hashContext = hash_init($hashAlgorithm);

// block အရွယ်အစားကိုသတ်မှတ်ပါ,ထုံးစံအားဖြင့် 8KB သို့မဟုတ် 16KB
$chunkSize = 8192; // 8KB

// ဖိုင်ကိုဖတ်ပြီး Real Time အတွက် hash တန်ဖိုးကိုအသစ်ပြောင်းပါ
while (!feof($fileStream)) {
    $data = fread($fileStream, $chunkSize);
    hash_update_stream($hashContext, $data);
}

// နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
$fileHash = hash_final($hashContext);

// output ဖိုင်၏ hash တန်ဖိုး
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: " . $fileHash . "\n";

// ဖိုင်စီးကိုပိတ်ပါ
fclose($fileStream);
?>

အသေးစိတ်သုံးသပ်ချက်

  1. Open File Stream <br> fopen function ကိုအသုံးပြုပြီးဖိုင်ကိုဖွင့်ပြီး Binary Mode ( RB ) တွင်ဖတ်ရန်ဖော်ပြပါ။ ဤသည်မှာဖတ်နေသည့်အကြောင်းအရာသည်ကွဲပြားသောဖိုင်အမျိုးအစားသို့မဟုတ်လိုင်းအားလပ်ချိန်များကြောင့်ပြ problems နာများကိုဖြစ်ပေါ်စေသည်မဟုတ်ကြောင်းသေချာစေရန်ဖြစ်သည်။

  2. Initialization Hashing algorithm
    Hash_init () သည် hash algorithm ကိုအစပိုင်းတွင် အသုံးပြု. သင်၏ရွေးချယ်မှု၏ hash algorithm ( Sha256 , MD5 စသည်) တွင် Pass ကိုအသုံးပြုသည်။ ၎င်းသည် hash တန်ဖိုးကိုအဆင့်တစ်ဆင့်တွက်ချက်ရန် hash အခြေအနေကိုဖန်တီးသည်။

  3. ဖိုင်ကိုဖတ်ပြီး Hash <br> ကိုမွမ်းမံပါ တစ်ကြိမ်စီတိုင်းသတ်မှတ်ထားသောအရွယ်အစားဖိုင်အတုံး (e.g. 8KB) ကိုဖတ်ရန် မည်သူက feaded-size file chunk ကိုဖတ်ပါ။ ထို့နောက် Read Data Blocks ကို Read Data Blocks ကိုအချိန်မှန်သို့မွမ်းမံရန် hash_update_stream ကို အသုံးပြုပါ။

  4. နောက်ဆုံး hash value ကိုရယူပါ နောက်ဆုံးတွက်ချက်ထားသော hash တန်ဖိုးကိုရယူရန်နှင့်ဖိုင်စီးကိုပိတ်ရန် Hash_final () function ကိုသုံးပါ။

ကြည့်ရှုပါ

  • ကြီးမားသော File Hash တွက်ချက်မှု <br> <br> ကြီးမားသောဖိုင်များ (1GB ထက်ပိုကြီးသောဖိုင်များကဲ့သို့သောဖိုင်များကဲ့သို့သောဖိုင်များကိုပြုပြင်သည့်အခါဖိုင်များကိုတစ်ပြိုင်နက်တည်းမှတ်တမ်းတင်။ မရပါ။ ဤအချိန်တွင်ဖိုင်ကိုအတုံးများဖြင့်ဖတ်ခြင်းနှင့် hash တန်ဖိုးကိုတွက်ချက်ခြင်းကမှတ်ဉာဏ်အသုံးပြုမှုကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။

  • File IntegressCity စိစစ်အတည်ပြု File Contents များကို file contents များကို files များထုတ်လွှင့်နေစဉ်ဖိုင်များသည်အနှောင့်အယှက်မပေးသည့်နေရာများအတွက်ဖြစ်နိုင်ချေရှိသောအခြေအနေများအတွက်ဖြစ်နိုင်ချေရှိသောဖိုင်များသည် hash တန်ဖိုးများမှတစ်ဆင့်ဖိုင်များ၏သမာဓိကိုစစ်ဆေးရန်အလွန်အရေးကြီးသည်။

ကုဒ် optimization အကြံပြုချက်များ

  • dynamically block အရွယ်အစားကိုညှိ စာဖတ်ခြင်း၏အရွယ်အစားကို System ၏မှတ်ဉာဏ်နှင့် disk စွမ်းဆောင်ရည်အတိုင်းချိန်ညှိနိုင်သည်။ သင့်လျော်သောပိတ်ပင်တားဆီးမှုအရွယ်အစားကိုရွေးချယ်ခြင်းသည်စွမ်းဆောင်ရည်ကိုပိုမိုတိုးတက်စေနိုင်သည်။

  • Multithreaded အပြောင်းအလဲနဲ့ <br> <br> အလွန်ကြီးမားသောဖိုင်များအတွက်မူဖိုင်၏အစိတ်အပိုင်းများကိုတစ်ပြိုင်နက်တည်းတိုးတက်စေရန်တစ်ပြိုင်နက်တည်းလုပ်ဆောင်ရန်အတွက်ဖိုင်အမျိုးအစားအမျိုးမျိုးကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်ရန်စဉ်းစားနိုင်သည်။

မကြာခဏမေးသောမေးခွန်းများ

  1. အလွန်ကြီးမားသောဖိုင်များသည်မှတ်ဥာဏ်မလုံလောက်မှုကို ဦး တည်သည် ဖိုင်များကိုဖတ်ရန်နှင့် hash တန်ဖိုးများကိုအတုံးဖြင့်မွမ်းမံရန် streaming ကိုအသုံးပြုသောအခါဖိုင်သည်အပြည့်အဝကိုအပြည့်အဝမမှတ်ထားပါ။

  2. Hash_update_Stream function ကိုမထောက်ပံ့သောဖိုင်အမျိုးအစားများ ဤလုပ်ဆောင်ချက်သည် binary data streams များကိုကိုင်တွယ်သည်, ထို့ကြောင့်စာသားဖိုင်များ, ရုပ်ပုံများ, ဗွီဒီယိုများစသည်များအပါအ 0 င်ဖိုင်အမျိုးအစားကိုမဆိုပြုလုပ်နိုင်သည်။

အခြားအရင်းအမြစ်များ