ကြီးမားသောဖိုင်များနှင့်အလုပ်လုပ်သောအခါဖိုင်တစ်ခုလုံးကိုတိုက်ရိုက်ဖတ်ရှုခြင်းနှင့် hash တန်ဖိုးကိုတွက်ချက်ခြင်းကမှတ်ဥာဏ်အလွန်အကျွံသုံးစွဲမှုသည်အလွန်အကျွံအသုံးပြုမှုကိုဖြစ်ပေါ်စေပြီးမှတ်ဉာဏ်မလုံလောက်သည့်အခါအစီအစဉ်ပျက်ပြားစေနိုင်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန် PHP ၏ hash_update_stream function ကို သုံး. file ကို file ထဲတွင်ဖတ်ရန်နှင့် hash တန်ဖိုးကိုအချိန်မှန်တွက်ချက်ရန်သင်အသုံးပြုနိုင်သည်။ ဤတွင်ဖိုင်တစ်ခုလုံးတွင်ဖိုင်ကိုမည်သို့ဖတ်ရမည်ကိုပြသသည့်ဥပမာတစ်ခုမှာဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်းတင်ခြင်းကိုရှောင်ရှားရန်ဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်သည်။
Hash_update_stream function သည် PHP မှအဆင့်မြှင့်တင်မှုများပြုလုပ်ရန် PHP မှပေးသော function တစ်ခုဖြစ်သည်။ Hash_update () function ကိုမတူဘဲ Hash_update_Stream သည် ကြီးမားသောဖိုင်များပြုပြင်ထုတ်လုပ်ရန်အတွက်သင့်လျော်သောဖိုင်စီးဆင်းမှု ( အရင်းအမြစ် ) မှတဆင့် hash တန်ဖိုးများကိုပိတ်ပင်တားဆီးမှုဖြင့်ပိတ်ဆို့ခြင်းဖြင့်ပိတ်ပင်တားဆီးမှုကိုပိတ်ပင်တားဆီးမှုဖြင့်ပိတ်ဆို့ခြင်း။
ဖိုင်စီးကိုဖွင့်ပါ။
hash algorithm ကို hash_init function ကို အသုံးပြု. hash algorithm ကိုစတင်ပါ။
file ကို chunks တွင်ဖတ်ရန် hash_update_stream ကို အသုံးပြု. Real Time အတွက် hash တန်ဖိုးကိုတွက်ချက်ရန်။
ပြီးဆုံးသောအခါ 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);
?>
Open File Stream <br> fopen function ကိုအသုံးပြုပြီးဖိုင်ကိုဖွင့်ပြီး Binary Mode ( RB ) တွင်ဖတ်ရန်ဖော်ပြပါ။ ဤသည်မှာဖတ်နေသည့်အကြောင်းအရာသည်ကွဲပြားသောဖိုင်အမျိုးအစားသို့မဟုတ်လိုင်းအားလပ်ချိန်များကြောင့်ပြ problems နာများကိုဖြစ်ပေါ်စေသည်မဟုတ်ကြောင်းသေချာစေရန်ဖြစ်သည်။
Initialization Hashing algorithm
Hash_init () သည် hash algorithm ကိုအစပိုင်းတွင် အသုံးပြု. သင်၏ရွေးချယ်မှု၏ hash algorithm ( Sha256 , MD5 စသည်) တွင် Pass ကိုအသုံးပြုသည်။ ၎င်းသည် hash တန်ဖိုးကိုအဆင့်တစ်ဆင့်တွက်ချက်ရန် hash အခြေအနေကိုဖန်တီးသည်။
ဖိုင်ကိုဖတ်ပြီး Hash <br> ကိုမွမ်းမံပါ တစ်ကြိမ်စီတိုင်းသတ်မှတ်ထားသောအရွယ်အစားဖိုင်အတုံး (e.g. 8KB) ကိုဖတ်ရန် မည်သူက feaded-size file chunk ကိုဖတ်ပါ။ ထို့နောက် Read Data Blocks ကို Read Data Blocks ကိုအချိန်မှန်သို့မွမ်းမံရန် hash_update_stream ကို အသုံးပြုပါ။
နောက်ဆုံး hash value ကိုရယူပါ နောက်ဆုံးတွက်ချက်ထားသော hash တန်ဖိုးကိုရယူရန်နှင့်ဖိုင်စီးကိုပိတ်ရန် Hash_final () function ကိုသုံးပါ။
ကြီးမားသော File Hash တွက်ချက်မှု <br> <br> ကြီးမားသောဖိုင်များ (1GB ထက်ပိုကြီးသောဖိုင်များကဲ့သို့သောဖိုင်များကဲ့သို့သောဖိုင်များကိုပြုပြင်သည့်အခါဖိုင်များကိုတစ်ပြိုင်နက်တည်းမှတ်တမ်းတင်။ မရပါ။ ဤအချိန်တွင်ဖိုင်ကိုအတုံးများဖြင့်ဖတ်ခြင်းနှင့် hash တန်ဖိုးကိုတွက်ချက်ခြင်းကမှတ်ဉာဏ်အသုံးပြုမှုကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။
File IntegressCity စိစစ်အတည်ပြု File Contents များကို file contents များကို files များထုတ်လွှင့်နေစဉ်ဖိုင်များသည်အနှောင့်အယှက်မပေးသည့်နေရာများအတွက်ဖြစ်နိုင်ချေရှိသောအခြေအနေများအတွက်ဖြစ်နိုင်ချေရှိသောဖိုင်များသည် hash တန်ဖိုးများမှတစ်ဆင့်ဖိုင်များ၏သမာဓိကိုစစ်ဆေးရန်အလွန်အရေးကြီးသည်။
dynamically block အရွယ်အစားကိုညှိ စာဖတ်ခြင်း၏အရွယ်အစားကို System ၏မှတ်ဉာဏ်နှင့် disk စွမ်းဆောင်ရည်အတိုင်းချိန်ညှိနိုင်သည်။ သင့်လျော်သောပိတ်ပင်တားဆီးမှုအရွယ်အစားကိုရွေးချယ်ခြင်းသည်စွမ်းဆောင်ရည်ကိုပိုမိုတိုးတက်စေနိုင်သည်။
Multithreaded အပြောင်းအလဲနဲ့ <br> <br> အလွန်ကြီးမားသောဖိုင်များအတွက်မူဖိုင်၏အစိတ်အပိုင်းများကိုတစ်ပြိုင်နက်တည်းတိုးတက်စေရန်တစ်ပြိုင်နက်တည်းလုပ်ဆောင်ရန်အတွက်ဖိုင်အမျိုးအစားအမျိုးမျိုးကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်ရန်စဉ်းစားနိုင်သည်။
အလွန်ကြီးမားသောဖိုင်များသည်မှတ်ဥာဏ်မလုံလောက်မှုကို ဦး တည်သည် ဖိုင်များကိုဖတ်ရန်နှင့် hash တန်ဖိုးများကိုအတုံးဖြင့်မွမ်းမံရန် streaming ကိုအသုံးပြုသောအခါဖိုင်သည်အပြည့်အဝကိုအပြည့်အဝမမှတ်ထားပါ။
Hash_update_Stream function ကိုမထောက်ပံ့သောဖိုင်အမျိုးအစားများ ဤလုပ်ဆောင်ချက်သည် binary data streams များကိုကိုင်တွယ်သည်, ထို့ကြောင့်စာသားဖိုင်များ, ရုပ်ပုံများ, ဗွီဒီယိုများစသည်များအပါအ 0 င်ဖိုင်အမျိုးအစားကိုမဆိုပြုလုပ်နိုင်သည်။
PHP တရားဝင်စာရွက်စာတမ်းများ https://www.php.net/manual/zh/function.hash-update-stream.php