PHP ပရိုဂရမ်တွင် hash_update_stream () သည် stream data ၏ hash တန်ဖိုးကိုတွက်ချက်ရန် Hash_update_stream () သည်အလွန်အသုံးများသော function တစ်ခုဖြစ်သည်။ ၎င်းသည်ဖိုင်တစ်ခုလုံးကိုတိုက်ရိုက်ပြုလုပ်ပြီးဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်တည်းတင်ခြင်းမရှိဘဲ hash တန်ဖိုးကိုတဖြည်းဖြည်းဖြည့်တင်းသည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင် hash_update_stream () အသုံးပြုခြင်းသည်အမြဲတမ်းအကောင်းဆုံးရွေးချယ်မှုဖြစ်လိမ့်မည်မဟုတ်ပါ။ ဤဆောင်းပါးသည်အဘယ်အခြေအနေများအောက်တွင် ဖော်ပြထားသော () နှင့် hash_update () ကို အသုံးပြုခြင်းနှင့် hash_update_stream ၏အသုံးပြုမှုအကန့်အသတ်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် ပတ်သက်. ဤဆောင်းပါးသည်လေ့လာမည်။
hash_update_stram () function ၏အဓိကလုပ်ဆောင်ချက်သည် stream data ကို spream leadsh constitionxext သို့ဖြတ်သန်းရန်နှင့်ဖိုင်၏ hash တန်ဖိုးကိုတဖြည်းဖြည်းတွက်ချက်ရန်ဖြစ်သည်။ ၎င်းသည်ကြီးမားသောဖိုင်အမျိုးအစားအတွက်အလွန်ကောင်းမွန်သည်, အဘယ်ကြောင့်ဆိုသော်၎င်းသည်ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့မထည့်သွင်းဘဲမှတ်ဉာဏ်အသုံးပြုမှုကိုလျော့နည်းစေသည်။ သို့သော်၎င်းတွင်အကန့်အသတ်ရှိသည်။
ဖိုင်စနစ်ကန့်သတ်ချက်များ - hash_update_stream () function သည်ဖိုင်လက်ကိုင်ပေါ်တွင်မူတည်သည်။ ဖိုင်စနစ်စစ်ဆင်ရေး (ခွင့်ပြုချက်ပြ issues နာများ, ဖိုင်သော့ခတ်ခြင်းစသည်) နှင့်ပြ problems နာအချို့ရှိပါက function သည်ကောင်းမွန်စွာအလုပ်လုပ်လိမ့်မည်မဟုတ်ပါ။
မသုံးနိုင်မှု - hash_update_stream () သည် file stream များကိုတိုက်ရိုက်ပြုလုပ်နိုင်ပြီးကွဲပြားခြားနားသောဒေတာစီးဆင်းမှုများမှပေါင်းစပ်ခြင်းကဲ့သို့သောအခြား input အရင်းအမြစ်များနှင့်ပြောင်းလွယ်ပြင်လွယ်မဖြစ်နိုင်ပါ။
Buffer Size ပြ issue နာ - ဤလုပ်ဆောင်မှု၏အခြေခံအကောင်အထည်ဖော်မှုသည်အချို့သောအခြေအနေများတွင်မသက်ဆိုင်ပါ။
hash_update_stream () ဖိုင်စီးဆင်းမှုအချက်အလက်များကိုကိုင်တွယ်နိုင်သော်လည်းအချို့သောသတ်သတ်မှတ်မှု (သို့) ပိုမိုကောင်းမွန်သောစွမ်းဆောင်ရည်ကိုရရှိရန်အတွက် () နှင့် hash_update () ကိုပေါင်းစပ်ရန်ရွေးချယ်ရန်ရွေးချယ်နိုင်သည်။
ဖိုင်တစ်ခုမှသတ်မှတ်ထားသောအရှည်၏အချက်အလက်များကိုဖတ်ရန် Fread () ကို အသုံးပြုနိုင်သည်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည်စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန်ဖတ်ရန်ဖတ်ရှုခြင်း၏အရွယ်အစားကိုညှိခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ကောင်းမွန်သောအုပ်စိုးမှုရရှိနိုင်သည်။ Hash_update_stream () ကဲ့သို့ပုံသေကြားခံကန့်သတ်ခြင်းမရှိဘဲဖတ်ရှုသည့်ဒေတာတစ်ခုချင်းစီ၏ပိတ်ပင်တားဆီးမှုအရွယ်အစားကိုကျွန်ုပ်တို့ပြောင်းလွယ်ပြင်လွယ်နိုင်သည်။
ဥပမာအားဖြင့်:
<?php
$filename = 'large_file.txt';
$handle = fopen($filename, 'rb');
$context = hash_init('sha256'); // ဖြစ်ပေါ်လာခြင်း SHA-256 hash algorithm
while (!feof($handle)) {
$data = fread($handle, 8192); // တစ်ခုချင်းစီကိုဖတ်ပါ 8 KB အချက်များ
hash_update($context, $data); // Hash တန်ဖိုးကို Update လုပ်ပါ
}
fclose($handle);
$hash = hash_final($context); // နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
echo $hash;
?>
fread () နှင့် hash_update () ကို အသုံးပြုသောအခါတိုင်း, အချိန်တိုင်းဖတ်ရှုခြင်းနှင့်မှတ်ဥာဏ်အသုံးပြုခြင်းကိုကိုင်တွယ်ဖြေရှင်းသည့်အချက်အလက်ပမာဏကိုကျွန်ုပ်တို့ထိန်းချုပ်နိုင်သည်။ ဥပမာဖိုင်သည်အတော်အတန်ကြီးမားသည်ကိုကျွန်ုပ်တို့သိပါကမှတ်ဉာဏ်သိပ်မများစေရန်အတွက်သင့်လျော်သောကြားခံအရွယ်အစားကိုသတ်မှတ်နိုင်သည်။
Hash_update_stream () သည်ကြီးမားသောဖိုင်များအတွက်သင့်တော်သော်လည်းစာဖတ်ခြင်းလုပ်ငန်းစဉ်သည် binter control သို့မဟုတ်ကွဲပြားခြားနားသော stream data အရင်းအမြစ်များကိုရွေးချယ်ရန်လိုအပ်ပါကကျွန်ုပ်တို့၏လိုအပ်ချက်များအရပိုမိုသင့်လျော်သောအကောင်အထည်ဖော်မှုနည်းလမ်းကိုရွေးချယ်နိုင်သည်။
hash_update_stream () file streams များနှင့်သဟဇာတဖြစ်မှုကိုသာသဟဇာတဖြစ်စေ နိုင်သော်လည်း , ၎င်းသည်ကျွန်ုပ်တို့၏ Code ကိုပိုမိုကျယ်ပြန့်စွာနှင့်ပိုမိုကျယ်ပြန့်သောအခြေအနေများအတွက်သင့်တော်သည်။
ဖိုင်စီးဆင်းမှု များကို ထုတ်ယူသောအခါ, ဖိုင်ကိုဖတ်နိုင်မလား, ဖိုင်ကိုဖတ်နိုင်သည်ဖြစ်စေဆုံးဖြတ်ခြင်းကဲ့သို့သောအမှားအယွင်းများ ကို ကိုင်တွယ်ခြင်းကဲ့သို့သောအမှားအယွင်းများပိုမိုလိုအပ်နေသည် ။
သီးခြားထင်ရှားသော | hash_update_stream () | fread () + hash_update () |
---|---|---|
ပြောင်းလွယ်ပြင်လွယ် | သာဖိုင်စီးထည့်သွင်းမှုကိုသာထောက်ပံ့သည် | ဖိုင်များ, ကွန်ယက်စီးဆင်းမှုများ, |
မှတ်ဉာဏ်ထိန်းချုပ်ရေး | မှတ်ဉာဏ်ကိုအလိုအလျောက်စီမံခန့်ခွဲနိုင်သော်လည်း Fixed Buffer Size | အဆိုပါကြားခံအရွယ်အစားကိုလွတ်လပ်စွာထိန်းချုပ်ထားသောထိန်းချုပ်ထားနိုင်ပြီးမှတ်ဉာဏ်အသုံးပြုမှုကိုအကောင်းဆုံးလုပ်နိုင်သည်။ |
အမှားကိုင်တွယ် | ရိုးရှင်းသောအမှားကိုင်တွယ်သည့်ယန္တရား | အသေးစိတ်အမှားကိုင်တွယ်မှုလိုအပ်ချက်များနှင့်အညီစိတ်ကြိုက်နိုင်ပါတယ် |
ဖိုင်မှီခို | သာ File Streams နှင့်သက်ဆိုင်သည် | Memory Memory Memory Stream, Network Stream စသည်ဖြင့်မည်သည့် stream အမျိုးအစားကိုမဆိုကိုင်တွယ်နိုင်သည်။ ) |
ပြပဲှ | ကြီးမားသောဖိုင်များအတွက်သင့်တော်သော်လည်းရှုပ်ထွေးသော streaming များအတွက်လုံလောက်သောပြောင်းလွယ်ပြင်လွယ်မဖြစ်နိုင်ပါ | အချက်အလက်များစီးဆင်းမှုမျိုးစုံအတွက်စွမ်းဆောင်ရည်သည်ညှိနှိုင်းပြီးပိုမိုထိရောက်စေသည် |
Hash_update_stream () သည်အလွန်အဆင်ပြေသောကိရိယာတစ်ခုဖြစ်သော်လည်းအထူးသဖြင့်ဖိုင်ကြီးများနှင့်ဆက်ဆံရာတွင်၎င်းတွင်ပြောင်းလွယ်ပြင်လွယ်မှုမရှိသည့်အပြင်မှတ်ဉာဏ်စီမံခန့်ခွဲမှုနှင့်အခြားလုပ်ဆောင်ချက်များသည်အတော်လေးရိုးရှင်းပါသည်။ အချို့သောရှုပ်ထွေးသော application တစ်ခုတွင် အစာရှောင်ခြင်း () နှင့် hash_update () ကိုအသုံးပြုခြင်းကိုအသုံးပြုခြင်းသည်အထူးသဖြင့်ကွဲပြားခြားနားသော stream data အရင်းအမြစ်များ,
ထို့ကြောင့်သင်၏လျှောက်လွှာသည် stream အမျိုးအစားများ ကို ကိုင်တွယ် ရန် သို့မဟုတ်မှတ်ဥာဏ်အသုံးပြုမှု ကို တင်းကြပ်စွာထိန်းချုပ်ရန်လိုအပ်သည့်အခါ,