အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် File Dedupplication သည်အထူးသဖြင့်ဖိုင်များအမြောက်အများသိုလှောင်သောအခါအထူးလိုအပ်ချက်တစ်ခုဖြစ်သည်။ ထပ်တူဖိုင်များကိုရှောင်ရှားခြင်းသည်နေရာလွတ်ရုံသာမကစနစ်ထိရောက်မှုကိုလည်းတိုးတက်စေသည်။ PHP သည်အလွန်အဆင်ပြေသော function ကိုထောက်ပံ့ပေးသော MD5_File () ကိုထောက်ပံ့ပေးသည်။ ၎င်းသည်ဖိုင်ကို Hash တွက်ချက်မှုကိုလျင်မြန်စွာအကောင်အထည်ဖော်ရန်ကူညီနိုင်သည့်အတွက်ဖိုင်ကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်ပါသလား။
MD5_File () သည် PHP တွင်သတ်မှတ်ထားသောဖိုင်အမျိုးအစား၏ MD5 hash တန်ဖိုးကိုတွက်ချက်ရန် PHP တွင် built-in function တစ်ခုဖြစ်သည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
string md5_file(string $filename, bool $raw_output = false)
$ filename : တွက်ချက်ခံရဖို့ဖိုင်လမ်းကြောင်း။
$ Raw_output : ကုန်ကြမ်း format မှာ output ကို output မှာ false ရှိမရှိ, 32-bit hexadecimal string ကိုပြန်ပို့သည်။
ဤလုပ်ဆောင်ချက်သည်ဖိုင်တွဲများ၏ထူးခြားသောအကျဉ်းချုပ်ကိုပြန်လည်ရရှိစေသည်။ ဖိုင်နှစ်ခုပါအကြောင်းအရာများအတူတူပင်ဖြစ်ကြောင်းဆုံးဖြတ်ရန်အလွန်သင့်လျော်သည်။
စိတ်ကူးကအရမ်းရိုးရှင်းပါတယ်:
ပစ်မှတ်ဖိုလ်ဒါရှိဖိုင်များအားလုံးမှတဆင့်ကြားတွင်။
ဖိုင်တစ်ခုစီအတွက် hash တန်ဖိုးကိုတွက်ချက်ရန် MD5_File () ကို သုံးပါ။
ပေါ်လာတဲ့ hash တန်ဖိုးကိုမှတ်တမ်းတင်ဖို့ array ကိုသုံးပါ။
ဖိုင်တစ်ခု၏ hash တန်ဖိုးတည်ရှိပါက၎င်းသည်မိတ္တူပွားဖိုင်တစ်ခုဖြစ်ရန်စိတ်ပိုင်းဖြတ်ထားပြီးသင်ဖျက်ရန်သို့မဟုတ် skip လုပ်ရန်သင်ရွေးချယ်နိုင်သည်။
ဤတွင်နမူနာကုဒ်ဖြစ်သည်။
<?php
$directory = '/path/to/your/files'; // ဖိုင်လမ်းညွှန်
$hashes = []; // ဖိုင်၏ hash တန်ဖိုးကိုသိမ်းဆည်းရန်အသုံးပြုခဲ့သည်
// ဖိုင်များကို directory ထဲတွင် traverse
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
foreach ($files as $file) {
if ($file->isFile()) {
$filePath = $file->getRealPath();
$fileHash = md5_file($filePath); // ဖိုင်များကိုတွက်ချက်ပါMD5
if (isset($hashes[$fileHash])) {
// ထပ်တူဖိုင်များကိုရှာပါ,အပြောင်းအလဲနဲ့လုပ်ဆောင်,ဥပမာအားဖြင့်, ဖျက်ပါ
echo "ဖိုင်များကိုမိတ္တူကူးပါ: {$filePath} 已存在ဖိုင်များကိုမိတ္တူကူးပါ {$hashes[$fileHash]}\n";
// unlink($filePath); // ဖျက်ရန်လိုအပ်လျှင်,ဒီလိုင်း uncomment
} else {
// အသစ် hash အသံသွင်း
$hashes[$fileHash] = $filePath;
}
}
}
?>
အသုတ်အပြောင်းအလဲကြီး - ကြီးမားသောလမ်းညွှန်ဖိုင်များစွာရှိလျှင်တစ်ချိန်တည်းတွင်မှတ်ဉာဏ်အမြောက်အမြားကိုမစားရန်အသုတ်တွင်စကင်ဖတ်စစ်ဆေးနိုင်သည်။
Cache Hash : အသုံးအများဆုံးလမ်းညွှန်များအတွက် hash ရလဒ်များကိုဒေတာဗေ့စ်သို့မဟုတ်ဖိုင်သို့သိမ်းဆည်းထားပြီးထိရောက်မှုကိုတိုးတက်စေရန်နောက်တစ်ကြိမ်ဖတ်နိုင်သည်။
အစားထိုး algorithm : MD5 သည်အလွန်အမင်းထိရောက်မှုရှိပေမယ့်အားနည်းချက်အားနည်းခြင်း, အကယ်. လုံခြုံရေးလိုအပ်ချက်များမြင့်မားပါက Sha1_File () သို့မဟုတ် hash_file ကို သုံး. သင်စဉ်းစားနိုင်သည်။
PHP တရားဝင်စာရွက်စာတမ်းများ - MD5_File ()