PHP တွင်ကြီးမားသောဒေတာဖိုင်များ, compression နှင့် hash တွက်ချက်မှုများကိုထုတ်လုပ်သည့်အခါ PHP တွင်ပါဝင်သည်။ Hash_Update_stream သည်ဖိုင်များသို့မဟုတ်ကြိုးများသာမဟုတ်ဘဲစီးဆင်းမှုကိုခွင့်ပြုသည့်အလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည် data stream ကိုတစ်ဆင့်ပြီးတစ်ဆင့်ပြီးအောင်လုပ်ပြီး data transmission နှင့် stression applications များအနေဖြင့်အလွန်အသုံးဝင်သောဖိုင်ကို compressing လုပ်နေစဉ် hash တန်ဖိုးကိုတွက်ချက်နိုင်သည်။
Gzip Compression Stream : GZIP သည်ဖိုင်များကိုသေးငယ်သောပမာဏများသို့ဖိအားပေးသောလူကြိုက်များသော compression format တစ်ခုဖြစ်သည်။ အချက်အလက်အမြောက်အများကိုလွှဲပြောင်းသည့်အခါ bandwidth အသုံးပြုမှုကိုလျှော့ချရန်အသုံးပြုသည်။
Hash Stream : Hash ဟာ algorithm တစ်ခုဖြစ်တယ်။ File cheum data verification အတွက်အသုံးပြုသော MD5, Sha1 စသဖြင့် MD5, Sha1 စသည်ဖြင့်ပါဝင်သည်။
PHP မှတစ်ဆင့်ကျွန်ုပ်တို့သည်အချက်အလက်များကိုတစ်ပြိုင်နက်တည်းချုံ့ခြင်းနှင့်ဆေးရုံတက်ခြင်းများပြုလုပ်ရန်အတွက် Gzopen နှင့်ပေါင်းစပ်ထားသော hash_update_stream နှင့်ပေါင်းစပ်နိုင်သည်။ သတ်သတ်မှတ်မှတ်အဆင့်များနှင့်ကုဒ်များကိုအောက်တွင်ပြထားသည်။
input file stream ကိုဖွင့်ပါ ။ ပထမ ဦး စွာအချက်အလက်များကိုဖတ်ရန်ဖိုင်စီးတစ်ခုလိုအပ်သည်။ ဤတွင်ကျွန်ုပ်တို့သည် Gzipc compressed file stream ကိုဖွင့်ရန် Gzopen ကို သုံးနိုင်သည်။ သို့မဟုတ်ပုံမှန်ဖိုင်စီးကိုဖွင့်ရန် fopen ကို သုံးနိုင်သည်။
hash algorithm ကိုစတင်ရန် hash_init ကို အသုံးပြု. Hash algorithm ကို Inprestize လုပ်ရန် Hash_Update_stream ကို အသုံးပြုပါ။
ဒေတာအဆင့်ကိုအဆင့်ဆင့်အဆင့်သတ်မှတ်ခြင်း - ဒေတာစီးကို compressing နေစဉ် hash တန်ဖိုးကိုတွက်ချက်ပါ။
Close Stream : ဒေတာများကိုပြုပြင်ပြီးတဲ့နောက်မှာစမ်းချောင်းတွေအားလုံးကိုပိတ်ပြီးနောက်ဆုံးမှာ hash value output လုပ်ရမယ်။
Gzip compressed streams များနှင့် hash stream လုပ်ငန်းများကိုကိုင်တွယ်သောအခါ Hash_update_stream ကို မည်သို့အသုံးပြုရမည်ကိုပြသသောနမူနာကုဒ်ဖြစ်သည်။
<?php
// hashing algorithm တက် setting(ကဲ့သို့ MD5)
$hash_algorithm = 'sha256';
// Input ဖိုင်စီးကိုဖွင့်ပါ(ဤတွင် input ကိုဖြစ်ယူဆဖြစ်ပါတယ် gzip စာချုပ်စာတမ်း)
$input_file = 'example.txt.gz';
$gzip_stream = gzopen($input_file, 'rb');
// တစ် ဦး hash အခြေအနေဖန်တီးပါ
$hash_context = hash_init($hash_algorithm);
// 打开输出စာချုပ်စာတမ်း流(ဒီမှာ, output ဖြစ်ယူဆနေသည် gzip ချုံ့စီး)
$output_file = 'output_compressed.gz';
$output_stream = gzopen($output_file, 'wb');
// ဒေတာခြေလှမ်းကိုအဆင့်ဆင့်နှင့်လုပ်ဆောင်ပါ
while (!gzeof($gzip_stream)) {
// ဒေတာအပိုင်းအစတစ်ခုကိုဖတ်ပါ
$data = gzread($gzip_stream, 4096);
// Hash တန်ဖိုးကို Update လုပ်ပါ
hash_update_stream($hash_context, $data);
// compressed ဒေတာရေးပါ
gzwrite($output_stream, $data);
}
// 关闭စာချုပ်စာတမ်း流
gzclose($gzip_stream);
gzclose($output_stream);
// နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
$final_hash = hash_final($hash_context);
// output ကို hash တန်ဖိုး
echo "The hash of the gzipped data is: " . $final_hash . "\n";
?>
GZOPEN : GZIP compressed file stream ကိုဖွင့်ရန်အသုံးပြုခဲ့သည်။ ဤတွင်ကျွန်ုပ်တို့သည် ဥပမာ အမည်ရှိ file.txt.gz ဖိုင်တစ်ခုကိုဖတ်ပြီး Gzread မှတဆင့်၎င်း၏အကြောင်းအရာများကိုစဉ်ဆက်မပြတ်ဖတ်ရှုသည်။
Hash_init : hash algorithm (shi256 စသည့် SHA256) ကိုအစပြုပါ။
hash_update_stream : ဒေတာတစ်ခုစီကို hash တွက်ချက်မှုအတွက် hash အခြေအနေကိုဖတ်ပါ။
Gzwrite : compressed file stream တွင်အချက်အလက်များကို gzip file အသစ်သို့ GZIP ဖိုင်အသစ်သို့ရေးပါ။
Gzclobe : စစ်ဆင်ရေးပြီးဆုံးသွားသောအခါကျွန်ုပ်တို့သည် System Resources ကိုအခမဲ့လွှတ်ရန်ဖိုင်စီးကိုပိတ်ရန်လိုအပ်သည်။
Hash_final : ပြီးပြည့်စုံသော hash တွက်ချက်မှုနှင့်နောက်ဆုံး hash တန်ဖိုးကိုဖြည့်စွက်။
ဤနည်းလမ်းသည်ဖိုင်ကြီးသို့မဟုတ် streaming data များပြုလုပ်ရန်အတွက်အထူးသဖြင့်ကွန်ယက်နှင့်သိုလှောင်မှုကာလအတွင်းဒေတာချုံ့ခြင်းနှင့်စစ်ဆေးခြင်းလိုအပ်သည်။ ဥပမာအားဖြင့်, GZip compressed file တစ်ခုကို download လုပ်ပြီးတစ်ချိန်တည်းတွင်ဖိုင်ပေါင်းစည်းမှုအတည်ပြုချက်ကိုပြုလုပ်ပါသို့မဟုတ်အချက်အလက်အမြောက်အများကိုချုံ့ခြင်းဖြင့်သိုလှောင်ခြင်းနှင့်၎င်းတို့၏ hash တန်ဖိုးများကိုတွက်ချက်ပါ။
ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်အချက်အလက်များကိုထိထိရောက်ရောက်ချုံ့ခြင်းသာမကထုတ်လွှင့်ခြင်းနှင့်သိုလှောင်မှုအတွင်းရှိအချက်အလက်များ၏သမာဓိကိုသေချာအောင်လုပ်နိုင်သည်။
သင့်လျော်သော hashing algorithm ကိုအသုံးပြုရန်သေချာအောင်လုပ်ပါ။ MD5 နှင့် Sha1 နှစ်ခုလုံးသည်သာမန်ရွေးချယ်မှုများဖြစ်သော်လည်း၎င်းတို့သည်လုံခြုံစိတ်ချရသောနှင့်အထိခိုက်မခံသောအပလီကေးရှင်းများနှင့်မသင့်တော်ပါ။
Stream Data ကိုဖတ်နေသည့်အခါစီးဆင်းမှု၏အဆုံးကိုကိုင်တွယ်ရန်သတိထားပါ။ စမ်းချောင်းများအဆုံးသတ်သွားမည်ကိုစစ်ဆေးရန် GZEOF ကို အသုံးပြုပါ။
streaming စစ်ဆင်ရေးများသည်အဆင့်ဆင့်တစ်ဆင့်ပြီးတစ်ဆင့်ပြီးတစ်ဆင့်ပြီးဆုံးသွားသောကြောင့်၎င်းတို့သည်မှတ်ဥာဏ်အကန့်အသတ်ဖြင့်ကြီးမားသောဖိုင်များနှင့်ပတ်ဝန်းကျင်ကိုကိုင်တွယ်ရန်သင့်တော်သည်။