PHP တွင် MD5_File သည် ဖိုင်တစ်ခု၏ MD5 hash တန်ဖိုးကိုတွက်ချက်ရန်အလွန်အဆင်ပြေသောလုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်း၏အသုံးပြုမှုသည်ရိုးရှင်းပါသည်, ၎င်းကိုဖိုင်လမ်းကြောင်းသို့ကူးပါ။
$hash = md5_file('http://m66.net/path/to/largefile.zip');
echo $hash;
သို့သော်ဖိုင်သည်အလွန်ကြီးမားသည့်အခါ MD5_File ကို အသုံးပြုခြင်းသည် MD5_File ကို အသုံးပြု. မှတ်ဉာဏ်မြင့်တက်စေပြီးမှတ်ဥာဏ်လျှံလျှံသောအမှားများကိုဖြစ်ပေါ်စေသည်။ ဘာဖြစ်လို့လဲဆိုတော့ PHP မှာဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲကိုစာဖတ်ခြင်းအတွက်အထူးသဖြင့်မှတ်ဥာဏ်တွေအများကြီးစားဖို့လွယ်ကူတဲ့ဝေးလံခေါင်သီသော URL ဖြစ်သည့်အခါတွင်ဖြစ်သည်။
MD5_File သည်လွယ်ကူသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သော်လည်း၎င်းသည်အခြေခံအလွှာတွင်အမှန်တကယ်လည်ပတ်သည့်အခါဖိုင်တစ်ခုလုံးကိုမကြာခဏကြားခဲ့ရသည်။ ရာနှင့်ချီသော Megabytes နှင့် GB နှင့်အတူကြီးမားသောဖိုင်များသို့မဟုတ် GB အနည်းငယ်ပင်လျှင်မှတ်ဉာဏ်ခြေရာသည်အလွန်မြင့်မားပြီး PHP ၏မှတ်ဉာဏ်ကန့်သတ်ချက်ထက်ကျော်လွန်ရန်လွယ်ကူလိမ့်မည်။
မှတ်ဉာဏ်ခွဲစိတ်မှုများကိုရှောင်ရှားနိုင်ရန်အတွက်ကျွန်ုပ်တို့သည် funks file streams များကိုဖတ်ရန်နှင့် MD5 ကိုတွက်ချက်ရန်အဖြေရှာနိုင်သည်။ ဤနည်းအားဖြင့်ဒေတာသေးငယ်သည့်အပိုင်းများကိုသာတစ်ကြိမ်လျှင်သာဖတ်ပြီးမှတ်ဉာဏ်အသုံးပြုမှုသည်အလွန်နည်းပါးသည်။
function md5_file_stream(string $filename): string|false {
// ဒါကြောင့်ဝေးလံခေါင်သီလျှင်URL,Protocol Header ကထောက်ခံမရှိမရှိပထမ ဦး ဆုံးစစ်ဆေးပါ
$context = stream_context_create([
'http' => ['method' => 'GET', 'timeout' => 10]
]);
// ဖိုင်စီးကိုဖွင့်ပါ
$fp = fopen($filename, 'rb', false, $context);
if (!$fp) {
return false;
}
$hashContext = hash_init('md5');
while (!feof($fp)) {
// တစ်ခုချင်းစီကိုဖတ်ပါ8KB,အနိမ့်မှတ်ဉာဏ်ဖိအား
$data = fread($fp, 8192);
if ($data === false) {
fclose($fp);
return false;
}
hash_update($hashContext, $data);
}
fclose($fp);
return hash_final($hashContext);
}
// အသုံးပြုမှုဥပမာ
$url = 'http://m66.net/path/to/largefile.zip';
$md5 = md5_file_stream($url);
if ($md5 !== false) {
echo "တင်သွင်းခြင်း MD5 တန်ဖိုး:$md5\n";
} else {
echo "ဖိုင်သို့မဟုတ်တွက်ချက်သောအမှားကိုဖတ်ရန်မအောင်မြင်ပါ。\n";
}
Memory Saving : တစ်ချိန်တည်းတွင်အချက်အလက်အနည်းငယ်ကိုသာဖတ်ပါ။ မှတ်ဉာဏ်အသုံးပြုမှုသည်တည်ငြိမ်သည်။
ကြီးမားသောဖိုင်များနှင့်သက်ဆိုင်သည် - ဒေသတွင်းနှင့်ဝေးလံခေါင်သီသောဖိုင်များကိုဝေးလံခေါင်သီသောဖိုင်များကိုတွက်ချက်ပါ။
ကွဲပြားခြားနားသောအခြေအနေများနှင့်လိုက်လျောညီထွေဖြစ်အောင်လုပ် ရာ ကို 16KB, 32KB စသဖြင့် (16 ကီလိုဂရမ်, 32KB စသည်) ကိုချိန်ညှိနိုင်သည်။
MD5 မှတွက်ချက်ရန်လိုအပ်သည့်ကြီးမားသောဖိုင်များနှင့်ကြုံတွေ့ရသောအခါ MD5_File Memory အသုံးပြုမှုသည်အလွန်မြင့်မားသည်။ ၎င်းသည်မှတ်ဥာဏ်ပေါက်ကွဲမှုများကိုရှောင်ရှားရုံသာမက Code ကိုရိုးရှင်းပြီးထိရောက်စေသည်။