ကြီးမားသောဖိုင်များပြုပြင်သည့်အခါ PHP ၏ hash_update function သည် MD5, Sha-1 သို့မဟုတ် Secure Sha-25 စသည့် hash တန်ဖိုးများကိုတွက်ချက်ခြင်းကဲ့သို့သောဖိုင်အကြောင်းအရာကိုမကြာခဏအသုံးပြုလေ့ရှိသည်။ သို့သော် Hash_update ကို အသုံးပြုခြင်းသည်များသောအားဖြင့်ကြီးမားသောဖိုင်များအတွက်စွမ်းဆောင်ရည်မြှင့်တင်ရေးများကိုတိုက်ရိုက်ကြုံတွေ့ရနိုင်သည်။ ဤဆောင်းပါးသည် Hash_update ၏စွမ်းဆောင်ရည်ကိုနမူနာကုဒ်နှင့်အတူတိုးတက်စေရန်ထိရောက်သောနည်းလမ်းများစွာကိုလေ့လာလိမ့်မည်။
ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့တိုက်ရိုက်ဖတ်ရှုပြီး Hash သည်မှတ်ဥာဏ်လျှံသို့မဟုတ်စွမ်းရည်မကောင်းသောစိတ်ဓာတ်ကိုဖြစ်ပေါ်စေသည်။ အကောင်းဆုံးအလေ့အကျင့်မှာ Batherh_update သို့တဖြည်းဖြည်းချင်းပ ont ိညာဉ်စာတမ်းများကိုတဖြည်းဖြည်းချင်းဖတ်ရန်အလေ့အကျင့်ဖြစ်သည်။
<?php
$filename = '/path/to/large/file.zip';
$context = hash_init('sha256');
$handle = fopen($filename, 'rb');
if ($handle === false) {
die('Failed to open file');
}
while (!feof($handle)) {
$buffer = fread($handle, 8192); // 8KB တစ်ခုချင်းစီကိုဖတ်ပါ
hash_update($context, $buffer);
}
fclose($handle);
$hash = hash_final($context);
echo "File hash: $hash\n";
?>
ဤနေရာတွင် 8KB Buffer အရွယ်အစားကို System Memory နှင့် IO စွမ်းဆောင်ရည်အတိုင်းချိန်ညှိနိုင်သည်။
ကြားခံအရွယ်အစားသည်တိုက်ရိုက်ဖတ်ခြင်းနှင့်ရေးခြင်းဖျော်ဖြေမှုကိုတိုက်ရိုက်သက်ရောက်သည်။ သေးငယ်လွန်းသော IO စစ်ဆင်ရေးအမြောက်အများကို ဦး တည်သွားစေလိမ့်မည်။ ယေဘုယျအားဖြင့်ပြောရလျှင် 8KB မှ 64KB သည်ရွေးချယ်မှုကောင်းတစ်ခုဖြစ်သည်။ အကောင်းဆုံးစွမ်းဆောင်ရည်ကို အရူး ၏ဒုတိယ parameter ကိုချိန်ညှိခြင်းဖြင့်စမ်းသပ်နိုင်သည်။
PHP နှင့်ပါ 0 င်သည့် hash_file function သည် PHP scripts ပိတ်ပင်တားဆီးမှုဖြင့်စာဖတ်ခြင်းပိတ်ပင်တားဆီးမှုထက်နောက်ခံအကောင်အထည်ဖော်မှုတွင်ပိုမိုထိရောက်စေသည်။ အကယ်. သင် hash တန်ဖိုးကိုတွက်ချက်ရုံသာလျှင်၎င်းကိုတိုက်ရိုက်အသုံးပြုရန်စဉ်းစားနိုင်သည်။
<?php
$hash = hash_file('sha256', '/path/to/large/file.zip');
echo "File hash: $hash\n";
?>
ဤနည်းလမ်းသည်သင့်အားဖိုင်ထောက်လှမ်းရေးကိုသင်ကိုယ်တိုင်စီမံရန်သင့်အားမလိုအပ်ပါ။ ၎င်းသည်စွမ်းဆောင်ရည်ကောင်း၏။
အကယ်. ပတ် 0 န်းကျင်ကိုပတ် 0 န်းကျင်ကိုခွင့်ပြုပါကဖိုင်ကိုအပိုင်းပိုင်း ခွဲ. ခွဲထုတ်နိုင်သည်။ PHP သည်လူပေါင်းစုံကိုလူမျိုးပေါင်းစုံကိုမထောက်ပံ့သော်လည်း PCNTL_Fork သို့မဟုတ်ပြင်ပ extensions များဖြင့်အကောင်အထည်ဖော်နိုင်သည်။
သို့သော်ဤဖြေရှင်းချက်သည်ရှုပ်ထွေးပြီး algorithm အကောင်အထည်ဖော်မှုကိုဆေးကြောရန်အတွက်အထူးလိုအပ်ချက်များရှိပြီးအထူးသဖြင့်ကြီးမားသောဖိုင်များနှင့်အထူးအခြေအနေများအတွက်သင့်လျော်သည်။
ဖိုင်သည်မကြာခဏမပြောင်းလဲပါကထပ်ခါတလဲလဲတွက်ချက်မှုများကိုလျှော့ချရန်ဖိုင်၏ hash တန်ဖိုးကိုသင်စဉ်းစားနိုင်သည်။
ဥပမာအားဖြင့်, နောက်ဆုံးပြင်ဆင်ခြင်းအချိန်နှင့်ဖိုင်၏ hash တန်ဖိုးကို ဦး စွာသိမ်းဆည်းပါ။
<?php
$filename = '/path/to/large/file.zip';
$cacheFile = '/tmp/file_hash_cache.json';
$cache = json_decode(file_get_contents($cacheFile) ?: '{}', true);
$filemtime = filemtime($filename);
if (isset($cache[$filename]) && $cache[$filename]['mtime'] === $filemtime) {
$hash = $cache[$filename]['hash'];
} else {
$hash = hash_file('sha256', $filename);
$cache[$filename] = ['mtime' => $filemtime, 'hash' => $hash];
file_put_contents($cacheFile, json_encode($cache));
}
echo "File hash: $hash\n";
?>
၎င်းသည် Hash ကိုအချိန်တိုင်းပြန်လည်တွက်ချက်ခြင်းကိုရှောင်ရှားသည်။
ကွဲပြားခြားနားသော hashing algorithms ၏စွမ်းဆောင်ရည်သည်အလွန်ကွဲပြားခြားနားသည်။ MD5 နှင့် Sha-1 သည် Sha-256 ထက်ပိုမိုမြန်ဆန်သည်, သို့သော်လုံခြုံမှုနည်းပါးသည်။ ဇာတ်လမ်းချုပ်၏အမြန်နှုန်းနှင့်လုံခြုံရေးလိုအပ်ချက်များအပေါ် အခြေခံ. သင့်လျော်သော algorithm ကိုရွေးချယ်ပါ။
စာဖတ်ခြင်းကိုပိတ်ပင်တားဆီးမှု - တစ်ချိန်တည်းတွင်စာဖတ်ခြင်းကိုရှောင်ကြဉ်ပါ ။
Buffer Size ကိုချိန်ညှိပါ ။
HashH_File function ကိုအသုံးပြုပါ ။ PHP hash file function hash file function ကိုသာလွန်စွမ်းဆောင်ရည်နှင့်အတူ။
Parallel Processing : သင်ဟာကြီးမားသောဖိုင်များအတွက် Process Sharding တွက်ချက်မှုများကိုပြုလုပ်နိုင်သည်။
cache hash ရလဒ်များ - မပြောင်းလဲသောဖိုင်များ၏ထပ်ခါတလဲလဲတွက်ချက်မှုများကိုရှောင်ပါ။
မှန်ကန်သော algorithm ကိုရွေးချယ်ပါ ။ အမြန်နှုန်းနှင့်လုံခြုံရေးအပေးအယူများအပေါ် အခြေခံ. Hash algorithm ကိုရွေးချယ်ပါ။
ဤနည်းစနစ်များကိုကျွမ်းကျင်ခြင်းသည် File Hashes ကြီးမားသောဖိုင်များကိုကိုင်တွယ်သည့်အခါ PPP အစီအစဉ်များ၏စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
<?php
// နမူနာကုဒ်:ဖိုင်များကိုအတုံးများတွင်ဖတ်ပါ hash_update ရေတွက် SHA-256
$filename = 'https://gitbox.net/path/to/large/file.zip';
$context = hash_init('sha256');
$handle = fopen($filename, 'rb');
if ($handle === false) {
die('Failed to open file');
}
while (!feof($handle)) {
$buffer = fread($handle, 65536); // 64KB
hash_update($context, $buffer);
}
fclose($handle);
$hash = hash_final($context);
echo "File hash: $hash\n";
?>