ကြီးမားသောဖိုင်များပြုပြင်သည့်အခါအထူးသဖြင့်ဖိုင်များအမြောက်အများရှိသည့်အခြေအနေများနှင့်မှတ်ဉာဏ်ထဲသို့တိုက်ရိုက် တင်. မရပါ, ဖိုင်ပြောင်းလဲခြင်းရှိမရှိဆုံးဖြတ်ရန်ကျွန်ုပ်တို့မကြာခဏဆုံးဖြတ်ရန်လိုအပ်သည်။ ရိုးရာ file file method များသည်အထူးသဖြင့်ဖိုင်အရွယ်အစားကြီးမားသည့်အခါအထူးသဖြင့်မှတ်ဉာဏ်များပိုမိုသုံးစွဲနိုင်သည်။ ထို့ကြောင့်၎င်းသည် file တစ်ခုကို hash တန်ဖိုးအပေါ် အခြေခံ. ဖိုင်ကိုပြုပြင်မွမ်းမံခြင်းရှိမရှိရှာဖွေရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။
PHP တွင် hash_update_stream ဖိုင်၏ hash တန်ဖိုးကိုတဖြည်းဖြည်းတွက်ချက်ရန်အသုံးပြုနိုင်သည်။ ဤဆောင်းပါးသည်ဖိုင်အချို့ပြောင်းလဲမှုများကိုစစ်ဆေးရန်ဤလုပ်ဆောင်မှုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
Hash_Update_stream သည် PHP ရှိ function တစ်ခုဖြစ်သည်။ ၎င်းသည်ကျွန်ုပ်တို့အားဖိုင်အကြောင်းအရာကိုအဆင့်ဆင့်တစ်ဆင့်ပြီးအောင်လုပ်ပြီးဖိုင်၏ hash တန်ဖိုးကိုတွက်ချက်ရန်ခွင့်ပြုသည်။ ဖိုင်တစ်ခုလုံး၏ Hash ကိုတိုက်ရိုက်တွက်ချက်ခြင်းနှင့်မတူဘဲ Hash_update_stream သည်ဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်နက်တည်း loading ကိုရှောင်ရှားသောကြောင့်ကြီးမားသောဖိုင်များအတွက်ပိုမိုသင့်တော်သည်။
ဖိုင်ကိုပြုပြင်မွမ်းမံခြင်းရှိမရှိရှာဖွေရန်, အောက်ပါအဆင့်များမှတဆင့်၎င်းကိုအများအားဖြင့်အကောင်အထည်ဖော်လေ့ရှိသည်။
ဖိုင်၏ hash တန်ဖိုးကိုထုတ်လုပ်ပါ ။ ပထမ ဦး စွာဖိုင်အတွက်ကန ဦး hash တန်ဖိုးကိုထုတ်လုပ်ရန်လိုအပ်သည်။ ဤ hash တန်ဖိုးကို hash_update_stream မှတွက်ချက်ပြီးဖိုင်၏မူလအခြေအနေ၏ "လက်ဗွေ" အဖြစ်သိမ်းဆည်းထားနိုင်သည်။
ဖိုင်၏ hash တန်ဖိုးကိုအခါအားလျော်စွာစစ်ဆေးပါ ။ ဖိုင်သည်ပြောင်းလဲခြင်းရှိ, မရှိစစ်ဆေးရန်လိုအပ်သည့်အခါဖိုင်၏ hash တန်ဖိုးကိုထပ်မံတွက်ချက်ပါ။
ဖိုင်ကိုပြုပြင်မွမ်းမံခြင်းရှိမရှိဆုံးဖြတ်ပါ - Hash Value သည် Old hash value နှင့်မတူပါကဖိုင်ကိုပြုပြင်ထားပါသည်။ ဒီလိုမှမဟုတ်ရင်ဖိုင်ကိုမပြောင်းလဲပါ။
အထက်ပါစစ်ဆေးမှုလုပ်ဆောင်ချက်ကိုအကောင်အထည်ဖော်ရန်ဖိုင်တစ်ခု၏ hash တန်ဖိုးကိုတွက်ချက်ရန် Hash_update_stream ကို မည်သို့အသုံးပြုရမည်ကိုကျွန်ုပ်တို့နားလည်ရန်လိုအပ်သည်။ ဒီမှာနမူနာကုဒ်တစ်ခုပါ။
<?php
// ဖိုင်လမ်းကြောင်းကိုသတ်မှတ်ပါ
$file = 'path/to/your/largefile.txt';
// ဖိုင်ကိုဖွင့်ပါ
$stream = fopen($file, 'rb');
if (!$stream) {
die('无法ဖိုင်ကိုဖွင့်ပါ');
}
// အသုံးပြု hash_update_stream တဖြည်းဖြည်း file hash တန်ဖိုးကိုတွက်ချက်
$context = hash_init('sha256'); // ကွဲပြားခြားနားသော hashing algorithms ကိုရွေးချယ်နိုင်ပါတယ်,ဥပမာအားဖြင့် sha256
while (!feof($stream)) {
$data = fread($stream, 8192); // block ဖြင့်ဖိုင်များကိုပိတ်ဆို့ခြင်းကိုဖတ်ပါ
hash_update_stream($context, $data); // Hash တန်ဖိုးကို Update လုပ်ပါ
}
// နောက်ဆုံး hash တန်ဖိုးကိုတွက်ချက်
$hash = hash_final($context);
fclose($stream);
// output ဖိုင်၏ hash တန်ဖိုး
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: $hash\n";
?>
အထက်ပါကုဒ်တွင် Hash_init မှတဆင့် hash contement တစ်ခုဖန်တီးပြီး Hash Volh Volh Volh Volh Volh Value ကို Hash_update_stream မှတဆင့် update လုပ်သည်။ ဖိုင်ချောင်းမှဒေတာသေးသေးလေးတစ်ခုစီကိုဖတ်ပါ။ ဖိုင်ကိုဖတ်မဖတ်မှီတိုင်အောင် hash_update_stream သို့သွားပါ။ နောက်ဆုံးအနေဖြင့်ဖိုင်၏နောက်ဆုံး hash တန်ဖိုးကို hash_final မှတဆင့်ရယူပါ။
ထို့နောက်ကျွန်ုပ်တို့သည်လိုအပ်ပါကနှိုင်းယှဉ်နိုင်အောင်ဖိုင်၏ hash တန်ဖိုးကိုသိမ်းဆည်းရန်လိုအပ်သည်။ ဤတွင်ဖိုင်ကိုပြုပြင်မွမ်းမံခြင်းရှိမရှိစစ်ဆေးရန်နမူနာကုဒ်ဖြစ်သည်။
<?php
// မူရင်း hash တန်ဖိုးကိုသိုလှောင်ရန်လမ်းကြောင်း
$hashFile = 'path/to/your/previous_hash.txt';
// မူရင်း hash တန်ဖိုးကိုရယူပါ(ရှိလျှင်)
$previousHash = file_exists($hashFile) ? file_get_contents($hashFile) : null;
// လက်ရှိဖိုင်၏ hash တန်ဖိုးကိုရယူပါ
$file = 'path/to/your/largefile.txt';
$stream = fopen($file, 'rb');
if (!$stream) {
die('无法ဖိုင်ကိုဖွင့်ပါ');
}
$context = hash_init('sha256');
while (!feof($stream)) {
$data = fread($stream, 8192);
hash_update_stream($context, $data);
}
$currentHash = hash_final($context);
fclose($stream);
// ရှိလျှင်之前的哈希值,နှိုင်းယှဉ်ပါ
if ($previousHash !== null) {
if ($previousHash === $currentHash) {
echo "ဖိုင်ကိုပြုပြင်မထားပါ。\n";
} else {
echo "ဖိုင်ကိုပြုပြင်ပြီးပြီ。\n";
}
} else {
echo "ယခင် Hash Value ကိုရှာမတွေ့ပါ,无法နှိုင်းယှဉ်ပါ。\n";
}
// လက်ရှိ hash တန်ဖိုးကိုသိမ်းဆည်းပါ,နောက်နှိုင်းယှဉ်သည်
file_put_contents($hashFile, $currentHash);
?>
ဤကုဒ်တွင်ကျွန်ုပ်တို့သည်ယခင်သိမ်းဆည်းထားသော hash value ကိုဖိုင်မှဖတ်ရန်ပထမ ဦး ဆုံးကြိုးစားသည်။ ထို့နောက်လက်ရှိဖိုင်၏ hash တန်ဖိုးကိုပြန်လည်တွက်ချက်ပြီးနှိုင်းယှဉ်ပါ။ အကယ်. hash တန်ဖိုးများသည်တသမတ်တည်းရှိပါကဖိုင်သည်မပြောင်းလဲဟုဆိုလိုသည်။ ကွဲပြားခြားနားလျှင်, ဖိုင်ကိုပြုပြင်ပြီးပြီ။ နောက်ဆုံးအနေဖြင့်ကျွန်ုပ်တို့သည်လက်ရှိ hash တန်ဖိုးကိုနောက်နှိုင်းယှဉ်မှုအတွက်ဖိုင်သို့သိမ်းဆည်းသည်။
အထက်ပါအဆင့်များမှတစ်ဆင့်ကျွန်ုပ်တို့သည်ဖိုင်ကြီးတစ်ခုကိုပြုပြင်မွမ်းမံခြင်းရှိမရှိရှာဖွေရန် hash_update_stream ကို ထိရောက်စွာအသုံးပြုနိုင်သည်။ ဖိုင်တစ်ခုလုံးကိုအချက်အလက်များကိုမှတ်ဉာဏ်အဖြစ်တိုက်ရိုက်တင်ရန်နှင့်နှိုင်းယှဉ်လျှင်ဤနည်းလမ်းသည်မှတ်ဥာဏ်အသုံးပြုမှုနှင့်စွမ်းဆောင်ရည်များတွင်သိသာထင်ရှားသည့်အားသာချက်များရှိပြီးအလွန်ကြီးမားသည့်ဖိုင်များကိုကိုင်တွယ်ရန်အထူးသဖြင့်သင့်လျော်သည်။
Hash Value နှိုင်းယှဉ်မှုမှတစ်ဆင့်ဖိုင်သည်ဖိုင်အမျိုးအစားကိုအနှောင့်အယှက်မပေးရန်သို့မဟုတ်ပျောက်ဆုံးခြင်းကိုသေချာစေရန်သမာဓိစစ်ဆေးမှုကိုအကောင်အထည်ဖော်နိုင်သည်။
ကြီးမားသောဖိုင်များ၏ပြုပြင်မွမ်းမံခြင်းနှင့်သင်၏ဖိုင်စီမံခန့်ခွဲမှုစွမ်းဆောင်ရည်ကို PHP တွင် hash_update_stream function ကိုမည်သို့အသုံးပြုရမည်ကိုနားလည်ရန်ဤဆောင်းပါးသည်သင့်အားနားလည်ရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။