application တစ်ခုတွင်ဖိုင်တစ်ခု၏ hash တန်ဖိုးကိုတွက်ချက်ခြင်းသည်ဘုံလိုအပ်ချက်တစ်ခုဖြစ်သည်။ Download စဉ်အတွင်းဖိုင်သည်ဖိုင်ကိုတွက်ချက်မှုရှိမရှိကိုစစ်ဆေးသည် ။ ၎င်းသည်ကြီးမားသောဖိုင်များကိုပြုပြင်ရန်အတွက်အထူးအရေးကြီးသည်, အဘယ်ကြောင့်ဆိုသော်ကျွန်ုပ်တို့သည်ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့ထည့်ရန်မလိုအပ်ပါ,
ဤဆောင်းပါးသည် Hash_update_Stream function ကို အသုံးပြု. Remote file streams များကိုအမှန်တကယ် အသုံးပြု. Hash တန်ဖိုးများကိုအချိန်မှန်တွက်ချက်ရန်မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။
Hash_update_stream သည် PHP တွင်ပါ 0 င်သော function တစ်ခုဖြစ်သည်။ လုပ်ဆောင်ချက်၏ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
hash_update_stream ( resource $context , resource $stream , int $length = 8192 ) : bool
$ အခြေအနေ : များသောအားဖြင့် hash_init မှဖန်တီးသော hash ဆက်စပ်မှုအရင်းအမြစ်။
$ stream : လုပ်ငန်းများ၌လိုအပ်သည့်ဖိုင်စီးအရင်းအမြစ်များ။
$ အရှည် - အချိန်တစ်ခုစီကိုဖတ်ရှုတိုင်းအချိန်တိုင်းဖတ်ပါ။ ပုံမှန်သည် 8192 bytes ဖြစ်သည်။
ဤလုပ်ဆောင်ချက်သည်သတ်မှတ်ထားသောဖိုင်စီးဆင်းမှုမှဒေတာများကိုဖတ်ပြီးဖိုင်ကိုဖတ်သည်အထိ၎င်းကို hash context သို့ update လုပ်သည်။
PHP တွင်ဝေးလံခေါင်ဖျားသောဖိုင်စီးများကိုကိုင်တွယ်ခြင်းသည်များသောအားဖြင့် fopen သို့မဟုတ် curl functions များကိုအသုံးပြုသည်။ ဤတွင် Fopen နှင့် Hash_update_stream ကို အသုံးပြု. Remote File Stream ကိုမည်သို့လုပ်ဆောင်ရမည်ကိုပြသပြီး Hash တန်ဖိုးများကိုအချိန်မှန်တွက်ချက်ရန်နှင့် hash values များကိုတွက်ချက်သည်။
<?php
// Hash အခြေအနေကိုစတင်ပါ(ဥပမာအားဖြင့် SHA-256 algorithm)
$hashContext = hash_init('sha256');
// ဝေးလံခေါင်သီဖိုင် URL
$fileUrl = 'http://m66.net/samplefile.txt';
// ဝေးလံခေါင်သီဖိုင်စီးကိုဖွင့်ပါ
$stream = fopen($fileUrl, 'r');
// ဖိုင်ကိုအောင်မြင်စွာဖွင့်သည်ကိုစစ်ဆေးပါ
if ($stream) {
// အသုံးပြု hash_update_stream Real-Time Hash Value update ကို
while (!feof($stream)) {
// တစ်ခုချင်းစီကိုဖတ်ပါ 8192 bytes နှင့် hash တန်ဖိုးကို update
hash_update_stream($hashContext, $stream, 8192);
}
// ဖိုင်စီးကိုပိတ်ပါ
fclose($stream);
// နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
$hashValue = hash_final($hashContext);
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: " . $hashValue;
} else {
echo "无法ဝေးလံခေါင်သီဖိုင်စီးကိုဖွင့်ပါ!";
}
?>
hash အခြေအနေကိုစတင်ရန် :
SHA-256 algorithm ၏ hash algorithm ၏ hash algorithm function ကိုမှပထမ ဦး ဆုံးဖန်တီးပါ။
Remote ဖိုင်စီးကိုဖွင့်ပါ
ဝေးလံခေါင်သီသောဖိုင်များကိုဖွင့်ရန် fopen ကို သုံးပါ။ ဖိုင်၏ URL သည် http://m66.net/swlefile.txt ဖြစ်သည်။ URL သည်၎င်းကို M66.net ဒိုမိန်းအမည်နှင့်အစားထိုးရန်သင်တောင်းခံသည့်အပိုင်းဖြစ်သည်။
Process file streams ကိုအချိန်မှန်အတွက် -
ဖိုင်စီးမှဒေတာများကိုဖတ်ရန်နှင့် hash တန်ဖိုးကိုတိုင်းမွမ်းမံရန် hash_update_stream function ကိုသုံးပါ။ default 8192-byte လုပ်ကွက်အရွယ်အစားကိုဖိုင်ကိုဖတ်ရန်ဤနေရာတွင်အသုံးပြုသည်။ ထိရောက်မှုတိုးပွားစေရန်သို့မဟုတ်မှတ်ဉာဏ်အသုံးပြုမှုကိုလျှော့ချရန်လိုအပ်သည့်အတိုင်းဤတန်ဖိုးကိုချိန်ညှိနိုင်သည်။
File Stream နှင့် output ရလဒ်များကိုပိတ်ပါ ။
ဖိုင်ဖတ်ပြီးသည်နှင့် FCLOESE ကို အသုံးပြု. FCLOES ကို အသုံးပြု. ဖိုင်စီးကိုပိတ်ပြီး Hash_Final ကို အသုံးပြု. နောက်ဆုံး hash value ကိုရယူပါ။
Memory စားသုံးမှု - ဖိုင်များကိုပိတ်ဆို့ခြင်းဖြင့်ဖိုင်များကိုပိတ်ဆို့ခြင်းနှင့် Hash Value ကိုအသစ်ပြောင်းခြင်းဖြင့်ဖတ်ပြီးသောကြောင့်ဤနည်းလမ်းသည်ဖိုင်တစ်ခုလုံးကိုတစ်ပြိုင်တည်းတင်ခြင်းထက်ပိုမိုထိရောက်စေသည်။
ချို့ယွင်းချက်ကိုင်တွယ်ခြင်း - လက်တွေ့ကျသောအပလီကေးရှင်းများတွင်ကွန်ယက်ပြတ်တောက်ခြင်းကဲ့သို့သောဖိုင်များသို့မဟုတ်စာဖတ်ခြင်းလုပ်ငန်းစဉ်အတွင်းဖြစ်နိုင်ချေရှိသောအမှားအယွင်းများကိုသင်စဉ်းစားသင့်သည်။ အမှားကိုင်တွယ်မှုကို Try-catch statement ကို သုံး. သို့မဟုတ်ပြန်လာတန်ဖိုးကိုစစ်ဆေးခြင်းကိုပြုလုပ်နိုင်သည်။
File Type Support : Hash_update_stream သည် ဖိုင်အမျိုးအစားများစွာကိုထောက်ပံ့သည်။ SHA1 , MD5 သို့မဟုတ်အခြားထောက်ပံ့ထားသော algorithms ကဲ့သို့သော hash algorithm ကိုလိုအပ်သလိုညှိနိုင်သည်။
FOPEN ကို အသုံးပြုခြင်းအပြင် Remote File Streams များကိုကိုင်တွယ်ရန်သင်ဆံပင်ကောက်ကောက်ကိုလည်းသုံးနိုင်သည်။ Curl သည်ပိုမိုရှုပ်ထွေးသောဝေးလံခေါင်ဖျားသောဖိုင်အမျိုးအစားများနှင့်သင့်လျော်သော HTTP တောင်းဆိုမှု parameters များနှင့် header အချက်အလက်များကိုပိုမိုကိုင်တွယ်နိုင်သည်။ ဤတွင် curl ကိုအသုံးပြုပြီးဥပမာတစ်ခု
<?php
// Hash အခြေအနေကိုစတင်ပါ
$hashContext = hash_init('sha256');
// ဝေးလံခေါင်သီဖိုင် URL
$fileUrl = 'http://m66.net/samplefile.txt';
// အသုံးပြု CURL Remote ဖိုင်စီးကိုရယူပါ
$ch = curl_init($fileUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // အချိန်ကုန်ထားပါ
// ကရိယာတန်းဆာ CURL ဖိုင်အကြောင်းအရာကိုတောင်းဆိုခြင်းနှင့်ရယူပါ
$response = curl_exec($ch);
// စစ်ဆေးကြည့်ရှု CURL တောင်းဆိုမှုအောင်မြင်သောရှိမရှိ
if ($response === false) {
echo "CURL အမှား: " . curl_error($ch);
curl_close($ch);
exit;
}
// အသုံးပြု hash_update_stream ဖိုင်အကြောင်းအရာကိုလုပ်ဆောင်ပါနှင့် hash တန်ဖိုးကိုတွက်ချက်ပါ
$stream = fopen('php://memory', 'r+');
fwrite($stream, $response);
rewind($stream);
while (!feof($stream)) {
hash_update_stream($hashContext, $stream, 8192);
}
// နောက်ဆုံး hash တန်ဖိုးကိုရယူပါ
$hashValue = hash_final($hashContext);
echo "ဖိုင်၏ hash တန်ဖိုးဖြစ်ပါတယ်: " . $hashValue;
// ဖိုင်စီးကိုပိတ်ပါ和 CURL ရုံးထိုင်အချိန်ကာလ
fclose($stream);
curl_close($ch);
?>
ဤဥပမာတွင် Remote File contents များကိုရယူရန် Curl ကို အသုံးပြု. မှတ်ဉာဏ်ချောင်းသို့ရေးပါ, ထို့နောက် hash_update_stream နှင့် hash တန်ဖိုးကိုတွက်ချက်ပါ။ ပိုမိုရှုပ်ထွေးသော network configurations များသို့မဟုတ်ထိန်းချုပ်မှုများလိုအပ်သည့်အခြေအနေများအတွက်ဤချဉ်းကပ်မှုသည်သင့်လျော်သည်။
PHP ၏ hash_update_stream function ကိုအသုံးပြုခြင်းဖြင့်ကြီးမားသောဖိုင်များကို အသုံးချ. ဖိုင်များကို memory ထဲသို့ 0 င်ရောက်ခြင်းကိုရှောင်ရှားနိုင်သည်။ ဝေးလံခေါင်သီသောဖိုင်များကိုလုပ်ဆောင်သောအခါ, သင်သည်အမှန်တကယ်လိုအပ်ချက်များနှင့်အညီရွေးချယ်ရန် fopen သို့မဟုတ် curl ကို ရွေးချယ်နိုင်သည်။ ဤနည်းစနစ်ကိုကျွမ်းကျင်ပြီးသောအခါဖိုင်အတည်ပြုခြင်း, ကူးယူခြင်းနှင့်အခြားအခြေအနေများကို download လုပ်ခြင်း,
ဒီဆောင်းပါးကမင်းကိုအထောက်အကူပြုမယ်လို့မျှော်လင့်ပါတယ်။ သင့်တွင်မေးခွန်းများရှိပါကမှတ်ချက်ပေးသည့်ကဏ် in တွင်၎င်းကိုဆွေးနွေးရန်အခမဲ့ဖြစ်ပါစေ။