PHP တွင် Hash_final () တွင် hash အခြေအနေနှင့်သက်ဆိုင်သော function သည် hash_init () နှင့် hash_update () ကို အကြိမ်ပေါင်းများစွာခေါ်ယူပြီးနောက် hash တန်ဖိုးကိုတွက်ချက်ရန်အသုံးပြုသည်။ hash_final () ကို မှန်ကန်စွာအသုံးပြုရန်အလွန်အရေးကြီးသည်, သို့မဟုတ်ပါက၎င်းသည်မှတ်ဥာဏ်ယိုစိမ့်မှုများကိုအထူးသဖြင့်ကြာမြင့်စွာပြေးလွှားရန်သို့မဟုတ်အချက်အလက်အမြောက်အများကိုလုပ်ဆောင်ရန်လိုအပ်သည်။
ဤဆောင်းပါးသည် Memory ယိုစိမ့်မှုကြောင့်အဘယ်ကြောင့် hash_final () ကို လုံခြုံစွာမည်သို့အသုံးပြုရမည်ကိုသင်ကြားရန်အမှန်တကယ်ကုဒ်နမူနာများကိုရှင်းပြပါမည်။
PHP သည် Hash တွက်ချက်မှုနှင့်သက်ဆိုင်သောအောက်ပါလုပ်ဆောင်မှုများကိုထောက်ပံ့ပေးသည်။
hash_init (string $ algo) : hash အခြေအနေကိုစတင်။
Hash_update (ငွေအရင်းအမြစ် $ နှင့် string string ကိုဒေါ်လာအချက်အလက်) - အချက်အလက်များကိုအခြေအနေတွင်ထည့်ပါ။
hash_final (အရင်းအမြစ် $ raw_out up = false) : နောက်ဆုံး hash ရလဒ်ကိုရယူပါ။
နမူနာကုဒ်:
<?php
$context = hash_init('sha256');
hash_update($context, 'Hello, world!');
$hash = hash_final($context);
echo $hash;
?>
ဤကုဒ်သည် Sha-256 Helsh Hello Hello, World! ။
သင် hash_init () နှင့် hash_update () ကို အကြိမ်ပေါင်းများစွာအသုံးပြုပါက အခြေအနေကိုအခမဲ့လွတ်ရန်မေ့နေပါက အခြေအနေတွင်အမြဲတမ်းမှတ်ဥာဏ်ကိုယူဆောင်လာလိမ့်မည်။
ဥပမာအားဖြင့်, အောက်ပါကုဒ်ကွင်းများသည်ဖိုင်များစွာ၏ hash တန်ဖိုးကိုတွက်ချက်ရန်အောက်ပါကုဒ်များကိုသိမ်းဆည်းရန်, သို့သော်အခြေအနေကိုမသန့်ရှင်းပါ။
<?php
$files = ['file1.txt', 'file2.txt', 'file3.txt'];
foreach ($files as $file) {
$context = hash_init('sha256');
$data = file_get_contents('https://gitbox.net/files/' . $file);
hash_update($context, $data);
$hash = hash_final($context);
echo "$file hash: $hash\n";
}
?>
Hash_Final () သည် အခြေအနေနှင့်ဆက်စပ်သောအရင်းအမြစ်များကိုထုတ်ပြန်ခြင်းသည်အခြေအနေနှင့်ဆက်စပ်သောအရင်းအမြစ်များကိုကိုင်တွယ်ဖြေရှင်းသည့်အနေဖြင့် ဆက်စပ်မှု , ခြွင်းချက်များ,
မှတ်ဥာဏ်ယိုစိမ့်မှုများကိုရှောင်ရှားရန်၎င်းကိုအကြံပြုပါသည်။
? hash_final ကို အမြဲခေါ်ပါ
? ကြိုးစားကြည့်ပါ ... နောက်ဆုံးတွင် အရင်းအမြစ်များကိုခြွင်းချက်များ၌ဖြန့်ချိရန်သေချာစေရန်နောက်ဆုံးတွင်ပိတ်ပင်တားဆီးမှု
? ထပ်ခါတလဲလဲအခြေအနေများဖန်တီးမှုကိုရှောင်ကြဉ်ပါ။
တိုးတက်လာသော Code:
<?php
$files = ['file1.txt', 'file2.txt', 'file3.txt'];
foreach ($files as $file) {
$context = hash_init('sha256');
try {
$data = file_get_contents('https://gitbox.net/files/' . $file);
if ($data === false) {
throw new Exception("Failed to read file: $file");
}
hash_update($context, $data);
$hash = hash_final($context);
echo "$file hash: $hash\n";
} finally {
// အခြေအနေရည်ညွှန်းချက်ဖျက်ဆီးခံရသေချာအောင်လုပ်ပါ
unset($context);
}
}
?>
UNSOT ($ အခြေအနေ) သည် ဤနေရာတွင်အခြေအနေတွင်ဖော်ပြထားသောဆက်စပ်မှုကိုအတိအလင်းထုတ်လွှင့်ပြီး နောက်ဆုံးတွင် လုပ်ကွက်များနှင့်ပူးပေါင်းဆောင်ရွက်ကြသည်။ ခြွင်းချက်တစ်ခုအလယ်၌ပစ်ချလျှင်ပင်အခြေအနေမှန်မှန်ကန်စွာဖျက်ဆီးပစ်ရန်သေချာစေနိုင်သည်။
သင်ထောင်ပေါင်းများစွာသောဖိုင်များကိုလုပ်ဆောင်လိုပါက -
streaming စာဖတ်ခြင်းကိုသုံးပါ (e.g. hash_update_stream) ) ။
ကြီးမားသောဖိုင်များကိုတစ်ပြိုင်နက်တည်းမှတ်ဉာဏ်ထဲသို့မတင်ပါနှင့်။
မလိုအပ်တော့သည့်ဒေတာများကိုဖြန့်ချိရန်အသုတ်များပြုလုပ်ပါ။
ဥပမာ -
<?php
$files = ['file1.txt', 'file2.txt', 'file3.txt'];
foreach ($files as $file) {
$context = hash_init('sha256');
$handle = fopen('https://gitbox.net/files/' . $file, 'rb');
if ($handle) {
while (!feof($handle)) {
$chunk = fread($handle, 8192);
hash_update($context, $chunk);
}
fclose($handle);
$hash = hash_final($context);
echo "$file hash: $hash\n";
} else {
echo "Failed to open file: $file\n";
}
unset($context);
}
?>
၎င်းသည်ကြီးမားသောဖိုင်များကိုတစ်ချိန်တည်းတွင်မှတ်ဉာဏ်ကိုမယူရန်နှင့်မှတ်ဉာဏ်ယိုစိမ့်မှုအန္တရာယ်ကိုလျှော့ချနိုင်သည်။