လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> hash_update_stream ကိုအသုံးပြုသည့်အခါဖိုင်စီးဆင်းမှုကိုမည်သို့မှန်ကန်စွာဖွင့်ရမည်နည်း။

hash_update_stream ကိုအသုံးပြုသည့်အခါဖိုင်စီးဆင်းမှုကိုမည်သို့မှန်ကန်စွာဖွင့်ရမည်နည်း။

M66 2025-05-18

PHP တွင် hash_update_stream () သည် hash တွက်ချက်မှုများကို update လုပ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်ပြီးကြီးမားသောဖိုင်များကိုကိုင်တွယ်ရန်ကြိုးစားလေ့ရှိသည်။ ကြီးမားသောဖိုင်များပြုပြင်သည့်အခါ streaming လုပ်ငန်းများသည်တစ်ချိန်တည်းတွင်ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့မမှတ်နေသွက်ရှောင်ရှားနိုင်သည်။ သို့သော် hash_update_stream ကို အသုံးပြုသောအခါ developer များစွာသည်မှန်ကန်စွာမဖွင့်နိုင်သည့်ဖိုင်များကဲ့သို့သောအများအားဖြင့်အမှားအယွင်းများနှင့်ကြုံတွေ့ရနိုင်သည်။

1 ။ hash_update_stream ၏အခြေခံအဆုတ် ()

hash_update_stream () function ကို function တစ်ခု၏ controt တစ်ခု၏ context သို့ addition လုပ်ရန်အသုံးပြုသည်။ အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <?php
// တစ် ဦး hash အခြေအနေဖန်တီးပါ
$context = hash_init('sha256');

// ဖိုင်စီးကိုဖွင့်ပါ
$file = fopen('example.txt', 'rb');
if ($file === false) {
    die("ဖိုင်ကိုဖွင့ ်. မရပါ!");
}

// update hash
hash_update_stream($context, $file);

// ဖိုင်စီးကိုပိတ်ပါ
fclose($file);

// hash တန်ဖိုးကိုရယူပါ
$hash = hash_final($context);
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: " . $hash;
?>

2 ။ ဘုံအမှားအယွင်းများနှင့်ဖြေရှင်းနည်းများ

အမှား 1 - ဖိုင်ကိုမှန်ကန်စွာဖွင့်လှစ်မထားပါ

hash_update_stream ကိုမသုံးမီ () , ဖိုင်စီးကိုမှန်ကန်စွာဖွင့်ထားကြောင်းသေချာအောင်ပြုလုပ်ရမည်။ developer တော်တော်များများကအဖွင့်အဖွင့် ဖွင့် ဖွင့်ပျက်ကွက်ခြင်း,

ဖြေရှင်းချက် -
fopen () ကို အသုံးပြုသောအခါဖိုင်ကိုအောင်မြင်စွာဖွင့်လှစ်နိုင်ကြောင်းသေချာပါစေ။ fopen () ပြန် မှား လျှင်စစ်ဆင်ရေးကိုချက်ချင်းရပ်တန့်ရန်လိုအပ်ပြီးအမှားတစ်ခုသည် output ကိုဖြစ်သည်။

 $file = fopen('example.txt', 'rb');
if ($file === false) {
    die("ဖိုင်ကိုဖွင့ ်. မရပါ!");
}

အမှား 2 - ဖိုင်စီးကိုမှန်ကန်စွာမပိတ်ပါ

FCLOESE () ကို အသုံးပြု. ဖိုင်စီးကိုပိတ်ရန် FCLOESE () ကို ဖုန်းဆက်ရန်မေ့ပျောက်ခြင်းသည်ဘုံအမှားဖြစ်သည်။ ဖိုင်စီးကိုပိတ်ရန်ပျက်ကွက်ခြင်းသည်စွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်စေနိုင်သည်သို့မဟုတ်အခြားပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သောအရင်းအမြစ်ယိုစိမ့်မှုကြောင့်ဖြစ်ပေါ်လာနိုင်သည်။

ဖြေရှင်းချက် -
ဖိုင်များစီးဆင်းမှုကိုသေချာစေရန်ဖိုင်စီးဆင်းမှုကိုပိတ်ရန်ဖိုင်လည်ပတ်မှုကိုပြီးစီးပြီးနောက်အမြဲတမ်း fcose () ကိုခေါ်ပါ။

 // ဖိုင်စီးကိုပိတ်ပါ
fclose($file);

အမှား 3 - ဖိုင်ဖတ်ရန်ပုံစံသည်မမှန်ကန်ပါ

ဖိုင်စီးကိုဖွင့်သောအခါရွေးချယ်ထားသောဖတ်ရန်ပုံစံသည်မသင့်လျော်ပါကဖိုင်အကြောင်းအရာကိုမှန်ကန်စွာဖတ်ရှုခြင်းသို့မဟုတ်စွမ်းဆောင်ရည်ကိုမသက်ဆိုင်ပါ။ Binary Files အတွက်ဖိုင်တွင် encoding encoding ပြောင်းလဲခြင်းကိုသေချာစေရန် 'rb' mode ကိုအသုံးပြုသင့်သည်။

ဖြေရှင်းချက် -
ဖိုင်ကို binary တွင်ဖတ်ပြီး encoding သို့မဟုတ် character ပြောင်းလဲခြင်းပြ issues နာများကိုရှောင်ရှားရန် 'RB' mode ကို အသုံးပြု. ဖိုင်ကိုဖွင့်ပါ။

 $file = fopen('example.txt', 'rb');

အမှား 4 - ဖိုင်စီးဆင်းနေသောအပြောင်းအလဲအတွက်အချိန်ကုန်ခြင်းသို့မဟုတ်ပြတ်တောက်ခြင်း

အလွန်ကြီးမားသောဖိုင်များအတွက် Stream အပြောင်းအလဲအတွက်အချိန်ကုန်ခြင်းသို့မဟုတ်ပြတ်တောက်ခြင်းကဲ့သို့သောပြ problems နာများဖြစ်နိုင်သည်။ အထူးသဖြင့်ကွန်ယက်တောင်းဆိုမှုများတွင်ဖိုင်တင်ခြင်းသို့မဟုတ်ဒေါင်းလုပ်လုပ်ရန်သို့မဟုတ်ဒေါင်းလုပ်လုပ်ရန်,

ဖြေရှင်းချက် -
ထုတ်လွှင့်သည့်အခါ PHP ၏ Max_execution_time configurations ထည့်သွင်းခြင်းဖြင့်အချိန်ကုန်လွန်မှုများကိုသင်တားဆီးနိုင်သည်သို့မဟုတ်ကြီးမားသောဖိုင်များကိုကိုင်တွယ်ရန်သင့်လျော်သောဖိုင်ဖတ်ရန်နှင့်မူဝါဒများကိုဖတ်ရှုခြင်းနှင့်မူဝါဒများရေးဆွဲခြင်းနှင့်မူဝါဒများရေးဆွဲခြင်းဖြင့်အသုံးပြုသည်။

 set_time_limit(0); // အချိန်ကုန်ကန့်သတ်တားမြစ်သည်

3 ။ URLs များကိုပြုပြင်သည့်အခါမှတ်စုများ

File Streams ကိုကိုင်တွယ်သောအခါ URLs များပါ 0 င်ရန်လိုအပ်ပါက URL ၏ Domain Name နှင့် protocol ကိုမှန်ကန်စွာသတ်မှတ်ရန်သေချာစေရန်သတိထားပါ။ ဥပမာအားဖြင့်, သင် URL မှတစ်ဆင့်ဖိုင်တစ်ခုရရန်လိုအပ်သည်ဆိုပါစို့, ဖိုင် url ၏ domain name အပိုင်းကို M66.net နှင့်အစားထိုးနိုင်သည်ဆိုပါစို့။