File Deeduplation ဆိုသည်မှာအချက်အလက်အပြောင်းအလဲအတွက်အလွန်အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။ File Deperplication တွင်ပိုမိုထိရောက်စွာလုပ်ဆောင်နိုင်သည့် hash collection များကိုပိုမိုထိရောက်စွာလုပ်ဆောင်နိုင်သည့် hash_update_stream () ကို PHP သည်အလွန်အစွမ်းထက်သော function ကိုပေးသည်။ ဤဆောင်းပါးသည်ထိရောက်သောဖိုင် Deduplactivation function ကိုရရှိရန် Hash_update_stream () function ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးပါမည်။
hash_update_stream () သည် PHP တွင် built-in hash function များထဲမှတစ်ခုဖြစ်သည်။ ၎င်းသည်ဖိုင်ကြီးများကိုဖိုင်များမထည့်ဘဲဖိုင်များ၏ contents များကိုတဖြည်းဖြည်းချင်းဖတ်ပြီး hash တန်ဖိုးကိုတွက်ချက်ခြင်းအားဖြင့်ဖိုင်ကြီးများကိုမွေ့မှတ်ဘဲပြုလုပ်နိုင်သည်။ ၎င်းသည်ကြီးမားသောဒေတာဖိုင်များ၏ hash တွက်ချက်မှုများအတွက်သင့်တော်ပြီး Hash တန်ဖိုးများကိုအချိန်မှန်တွင်မွမ်းမံနိုင်သည်။
၎င်း၏ function ကိုလက်မှတ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool hash_update_stream ( resource $context , resource $file , int $length = 8192 )
$ Context : hash_init () မှဖန်တီးထားသော hash အခြေအနေကို။
$ file : hash တန်ဖိုးကိုတွက်ချက်ရန်ဖိုင်အရင်းအမြစ်။
$ အရှည် - ဖိုင်ဖတ်လျှင် bytes အရေအတွက်, default သည် 8192 bytes ဖြစ်သည်။
File Deduplication ၏ဖြစ်ရပ်တွင်ဖိုင်တစ်ခုစီအတွက် hash တန်ဖိုးကိုတွက်ချက်ရန်လိုအပ်ပြီး hash တန်ဖိုးရှိပြီးသားရှိမရှိဆုံးဖြတ်ရန်လိုအပ်သည်။ အကယ်. hash တန်ဖိုးရှိပြီးဖြစ်ပါကဖိုင်ကိုပုံတူကူးယူပါက၎င်းကိုဖျက်ပစ်နိုင်သည်။
Hash_update_stream မှတဆင့် () , ကျွန်ုပ်တို့သည်ကြီးမားသောဖိုင်များအပေါ်တစ်ဆင့်ချင်းစီကိုအဆင့်မြင့်တွက်ချက်မှုများကိုမှတ်ဉာဏ်အလွန်အကျွံမစားဘဲထိရောက်စွာလုပ်ဆောင်နိုင်ပြီး,
Hash_update_stream () ကို hash တွက်ချက်မှုများကိုပြုလုပ်ရန် Hash_update_stream () ကို အသုံးပြု. File DechPLICE ၏ရိုးရှင်းသော PHP SPP ဥပမာ -
<?php
// hashing algorithm တက် setting
$hash_algorithm = 'sha256';
// folder ကို deverplicate ဖို့လမ်းကြောင်းကိုရယူပါ
$directory = '/path/to/your/files';
// Hashed တန်ဖိုးများကိုသိုလှောင်ထားသည့်ခင်းကျင်းမှုကိုဖန်တီးပါ
$hashes = [];
// directory ထဲတွင်ဖိုင်အားလုံးကိုရယူပါ
$files = scandir($directory);
foreach ($files as $file) {
$file_path = $directory . DIRECTORY_SEPARATOR . $file;
// ခုန်ကျော်သည် '.' နှင့် '..'
if ($file === '.' || $file === '..') {
continue;
}
// Hash အခြေအနေကိုစတင်ပါ
$context = hash_init($hash_algorithm);
// ဖိုင်ကိုဖွင့်ပါ
$file_resource = fopen($file_path, 'rb');
if ($file_resource) {
// တဖြည်းဖြည်း hash တန်ဖိုးကို update
while (!feof($file_resource)) {
hash_update_stream($context, $file_resource, 8192);
}
// File အရင်းအမြစ်များကိုပိတ်ပါ
fclose($file_resource);
// ဖိုင်၏နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
$hash = hash_final($context);
// hash တန်ဖိုးရှိပြီးသားရှိမရှိစစ်ဆေးပါ
if (in_array($hash, $hashes)) {
// ဖိုင်ထပ်ခါတလဲလဲလျှင်,ဖျက်ပါ
unlink($file_path);
echo "ထပ်တူဖိုင်များကိုဖျက်ပါ: $file\n";
} else {
// အခြားနည်းအားဖြင့်,ရှိပြီးသား Hash Array သို့ hash တန်ဖိုးကိုထည့်ပါ
$hashes[] = $hash;
}
} else {
echo "无法ဖိုင်ကိုဖွင့်ပါ: $file\n";
}
}
echo "File Deeduplication ပြီးစီးခဲ့သည်!\n";
?>
ဖိုင်တွဲထဲရှိဖိုင်များအားလုံးကိုရယူပါ ။ ပထမ ဦး စွာကျွန်ုပ်တို့သည် directory ထဲတွင်ဖိုင်များအားလုံးကိုရယူရန် Snangir () function ကိုသုံးသည်။ ကျနော်တို့ကျော်သွားချင်တယ်ဆိုတာသတိပြုပါ ။ နှင့် .. ဖောင်းပိ။
hash တန်ဖိုးအဆင့်ကိုအဆင့်ဆင့်တွက်ချက်ပါ ။ ဖိုင်တစ်ခုစီအတွက် hash connection ကိုပထမ ဦး ဆုံးအစဖွင့်ထားပြီးထို့နောက် hash_update_stream () ကို သုံး. hash value ကိုဖတ်ရန်
Deduplivation တရားစီရင်ခြင်း - တွက်ချက်ထားသည့် hash value array $ hash များကို သိမ်းဆည်းခြင်းအားဖြင့်လက်ရှိဖိုင်၏ hash တန်ဖိုးသည်ရှိပြီးသားရှိမရှိဆုံးဖြတ်သည်။ အကယ်. ၎င်းသည်တည်ရှိပါကဖိုင်ကိုထပ်ခါတလဲလဲပြုလုပ်ပြီးဖိုင်ကိုတိုက်ရိုက်ဖျက်ပစ်ခြင်းကိုဆိုလိုသည်။ ဒီလိုမှမဟုတ်ရင် hash value ကို array ထဲထည့်ပြီးနောက်ဖိုင်ကိုဆက်လုပ်ပါ။
Memory Optimization : hash_update_stram () function ကိုဖြင့်ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့မတင်နိုင်သဖြင့်ကြီးမားသောဖိုင်များကိုကိုင်တွယ်နိုင်သည်။
တစ်ပြိုင်နက်တည်းdeedוlolation : များစွာသောဖိုင်များ၏ကြီးမားသောဖိုင်များအတွက်, အများအပြားချည်သို့မဟုတ်အသုတ်သို့မဟုတ်သုတ်ထုတ်ယူခြင်းကို Depuploplication Speed တိုးမြှင့်ဖို့အသုံးပြုနိုင်ပါတယ်။ PHP သည် လူမျိုးပေါင်းစုံ ပေါင်းစုံကိုမပံ့ပိုးနိုင်ပါ။
Hash Collision -hash collision ဖြစ်နိုင်ချေသည်အလွန်အမင်းဖြစ်ရပ်များတွင်အလွန်နည်းပါးသော်လည်း, ဖိုင်တွဲများ၏ hash တန်ဖိုးများသည်အတူတူပင်ဖြစ်သော်လည်း, ထို့ကြောင့်လုံလောက်သောခိုင်မာသည့် algorithm ကိုရွေးချယ်ခြင်း ( sha256 စသည့်) ဤအန္တရာယ်ကိုများစွာလျှော့ချနိုင်သည်။
Hash_update_stream () function ကိုအသုံးပြုခြင်းသည်အထူးသဖြင့်မှတ်ဉာဏ်သုံးစွဲမှုကိုသိသိသာသာလျှော့ချနိုင်သည့်ဖိုင်ကြီးများကိုသိသိသာသာလျှော့ချနိုင်သည့်ဖိုင်များကိုပြုပြင်ပြောင်းလဲခြင်းနှင့်ထိရောက်မှုကိုသိသိသာသာလျှော့ချနိုင်သည်။ ရိုးရှင်းသော hash value ကိုစီရင်ချက်မှတစ်ဆင့်ကျွန်ုပ်တို့သည်ပုံတူဖိုင်များကိုအလွယ်တကူဖျက်ပစ်နိုင်သည်, သိုလှောင်ရန်နေရာချောင်းမြောင်းရန်နှင့်စနစ်စွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
ဤဆောင်းပါးသည်ဖိုင်ကိုအကောင်အထည်ဖော်ရန် hash_update_stream () ကို ပိုမိုနားလည်ရန်နှင့်အသုံးပြုရန် Hash_update_stram () ကိုအသုံးပြုရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။ သင့်တွင်မေးခွန်းများရှိပါကမှတ်ချက်ပေးရန်ရိယာတွင်စာတစ်စောင်ထားခဲ့ပါ။