လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP: // stdin နှင့် hash_update_stream () command line processing ကိုသုံးပါ

PHP: // stdin နှင့် hash_update_stream () command line processing ကိုသုံးပါ

M66 2025-05-27

PHP တွင်ကြီးမားသောဖိုင်များပြုပြင်သည့်အခါဖိုင်တစ်ခုလုံးကို Hash တွက်ချက်မှုများအနေဖြင့်အချက်အလက်များကိုတိုက်ရိုက်တင်ခြင်းသည်အထူးသဖြင့်ဖိုင်များအလွန်ကြီးမားသည့်အခါ, ဤပြ problem နာကိုဖြေရှင်းရန် PHP သည် PHP: // stdin stream နှင့် hash_update_stream () function ကိုထောက်ပံ့ပေးသည်။ Memory Splowlow မှရှောင်ရှားရန်ဖိုင်အကြောင်းအရာကိုဖတ်ရှုနေစဉ်နှစ် ဦး ၏ပေါင်းစပ်ထားသော hash processing ကိုအကောင်အထည်ဖော်နိုင်သည်။

ဤဆောင်းပါးသည်ဤကိရိယာနှစ်ခုကို command line တွင် command line တွင် command line တွင် command line တွင် command တွက်ချက်မှုများအတွက်မည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြပါလိမ့်မည်။

1 ။ ပြင်ဆင်မှု

ပထမ ဦး စွာ PHP install လုပ်ထားကြောင်းသေချာအောင်လုပ်ပါ။ PHP scripts များကို command line မှ run နိုင်သည်။ အောက်ပါ command ကိုလိုက်နာခြင်းဖြင့် PHP ကိုမှန်ကန်စွာတပ်ဆင်ခြင်းရှိမရှိကိုသင်အတည်ပြုနိုင်သည်။

 php -v

အကယ်. သင်သည် PHP ကိုမထည့်သွင်းပါက PHP ကို ​​http://m66.net/download/php တွင် download လုပ်. တပ်ဆင်နိုင်သည်။

ထို့နောက်ကျွန်ုပ်တို့သည် PHP ၏ built-in PHP: // stdin stream ကို အသုံးပြု. Hash တွက်ချက်မှုအတွက် hash_update_stream () function ကိုပေါင်းစပ်ရန် STDIN စီးဆင်းမှုကိုအသုံးပြုပါမည်။

2 ။ PHP: // stdin နှင့် hash_update_stream () ကိုဆေးကြောပါ

PHP မှနိဒါန်း: // stdin

PHP: // stdin သည်အထူးစီးဆင်းမှုတစ်ခုဖြစ်ပြီးသင့်အားစံ input မှအချက်အလက်များကိုဖတ်ရန်ခွင့်ပြုသည့်အထူးစီးဆင်းမှုတစ်ခုဖြစ်သည်။ ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲမတင်ဘဲကြီးမားသောဖိုင်များ (သို့) အ 0 တ်ပေးသည့်ပံ့ပိုးမှုများကိုကိုင်တွယ်ရန်သင်အသုံးပြုနိုင်သည်။

hash_update_stream () function ကို

hash_update_stream () function သည် hash တန်ဖိုးများကိုတွက်ချက်ရန် PHP မှအသုံးပြုသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ပုံမှန် hash_update () function ကိုမတူဘဲ Hash Value ကို Stream မှတဆင့်တိုက်ရိုက်မွမ်းမံရန်ခွင့်ပြုသည်။ ၎င်းသည်ကြီးမားသောအချက်အလက်များကိုကိုင်တွယ်သောအခါအထူးအသုံးဝင်သည်။

function ရှေ့ပြေးပုံစံ:

 bool hash_update_stream ( resource $context , resource $stream [, int $length = 8192 ] )
  • $ Context : hash_init () ကဖန်တီး hash အခြေအနေ။

  • $ stream : hash တွက်ချက်ရန်အသုံးပြုသောစီးသည် (ကျွန်ုပ်တို့၏ကိစ္စတွင် PHP: // stdin ) ။

  • $ အရှည် - တစ်ချိန်တည်းတွင်ဖတ်သည့် bytes အများဆုံးအရေအတွက် (ပုံမှန်သည် 8192 bytes) ဖြစ်သည်။

3 ။ နမူနာကုဒ်

Hash တွက်ချက်မှုများပြုလုပ်ရန် PHP: // stdin နှင့် hash_update_stream () ကို မည်သို့အသုံးပြုရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာတစ်ခုရှိသည်။

ဥပမာ - Standard Input မှ Hash ကိုဖတ်ပြီးတွက်ချက်ပါ

 <?php

// a SHA256 Hash အခြေအနေ
$context = hash_init('sha256');

// ဖွင့်လှစ် php://stdin စီးဆင်း
$stream = fopen('php://stdin', 'r');

// တစ်ခုချင်းစီကိုဖတ်ပါ 8192 ဒေတာ၏ bytes နှင့် update ကို value ကို update ကို
while (!feof($stream)) {
    $data = fread($stream, 8192);
    hash_update_stream($context, $data);
}

// နောက်ဆုံး hash တန်ဖိုးကိုတွက်ချက်
$hash = hash_final($context);

// တွက်ချက်ထားသည့် hash တန်ဖိုးကို output
echo "အဆိုပါတွက်ချက် hash တန်ဖိုးဖြစ်ပါတယ်:$hash\n";

// 关闭စီးဆင်း
fclose($stream);

?>

စစ်ဆင်ရေး mode ကို

  1. အထက်ပါကုဒ်ကို hash_stdin.php အဖြစ်သိမ်းဆည်းပါ။

  2. command line တွင် hash တွက်ချက်မှုများအတွက် script ကို pipe ဒေတာ။ ဥပမာအားဖြင့်ဖိုင်တစ်ခုကိုဖတ်ပြီး Sha256 hash ကိုတွက်ချက်ပါ။

 cat largefile.txt | php hash_stdin.php

တနည်းအားဖြင့်သင်သည် hash တွက်ချက်မှုများကို 0 င်ရောက်ခြင်းအားဖြင့်သင်တိုက်ရိုက်ပြုလုပ်နိုင်သည်။

 echo "Hello, World!" | php hash_stdin.php

4 ။ ကုဒ်ရှင်းပြချက်

  1. hash အခြေအနေကိုဖန်တီးပါ။
    hash_init ('Sha256' ကို အသုံးပြု. sha256 hash အခြေအနေကိုဖန်တီးပါ။ MD5 , Sha1 စသည့်အခြားအထောက်အပံ့ပေးသော Hashing algorithms ဖြင့် 'sha256' ဖြင့် 'sha256' ဖြင့်အစားထိုးနိုင်သည်။

  2. စံ input ကိုဖွင့်ပါ:
    FOPEN ('PHP: // stdin') သည် စံထည့်သွင်းမှုများကိုညွှန်ပြသည့်စမ်းချောင်းတစ်ခုဖွင့်လှစ်သည်။ ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည် command line မှ input data များကိုဖတ်ရှုနိုင်သည်။

  3. hash ကိုဖတ်ပြီး update လုပ်ပါ။
    Block မှဒေတာပိတ်ပင်တားဆီးမှုကိုဖတ်ရှုရန် (8192 Bytes 8192 သည်အချိန်တိုင်းဖတ်ရန်) ကိုဖတ်ရန် (8192) ကိုဖတ်ရန် (8192) ကို အသုံးပြု. hash တွက်ချက်မှုကို update လုပ်ရန် hash_update_stream () ကို သုံးပါ။

  4. နောက်ဆုံး hash တန်ဖိုးကိုတွက်ချက်:
    ဖိုင်ကိုဖတ်ပြီးသည်နှင့် Hash_Final () ကို တွက်ချက်ရန်နှင့်နောက်ဆုံး hash တန်ဖိုးကိုတွက်ချက်ရန်ခေါ်ပါ။

  5. output ကို hash တန်ဖိုး:
    command line သို့တွက်ချက်ထားသော hash တန်ဖိုးကို output လုပ်ရန် ECHO ကို သုံးပါ။

5 ။ သက်ဆိုင်သောအခြေအနေများ

  • ကြီးမားသောဖိုင်များကိုကိုင်တွယ်ခြင်း - PHP: // stdin နှင့် hash_update_stream () ကို အသုံးပြု. ကြီးမားသောဖိုင်များကိုမှတ်ဉာဏ်သို့လုံးလုံးလျားလျားမတင်လိုဘဲလုပ်ဆောင်ရန်လိုအပ်သည့်အခါအကောင်းဆုံးသောဖြေရှင်းနည်းတစ်ခုဖြစ်သည်။ ၎င်းသည်သင့်အားအချက်အလက်များကိုတစ်ဆင့်ချင်းဖတ်ပြီး hash တွက်ချက်မှုများကိုပြုလုပ်ရန်ခွင့်ပြုသည်။

  • Real-time data stream: အကယ်. ကွန်ယက်ချိတ်ဆက်မှုသို့မဟုတ်အာရုံခံကိရိယာမှရရှိသောအချက်အလက်များစီးဆင်းမှုကဲ့သို့သောအချိန် Real-time data stream လုပ်ရန်လိုအပ်လျှင်ဖြစ်နိုင်သည်။

6 ။ မှတ်စုဖို့အရာ

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

  • streaming ကိုအသုံးပြုသောအခါအရင်းအမြစ်ယိုစိမ့်မှုကိုရှောင်ရှားရန်စစ်ဆင်ရေးပြီးစီးပြီးနောက် streaming အရင်းအမြစ်များကိုပိတ်ထားပါ။

7 ။ နိဂုံးချုပ်

PHP: // stdin နှင့် hash_update_stream ကို ပေါင်းစပ်ခြင်းအားဖြင့်, ကြီးမားသောဖိုင်များသို့မဟုတ် Real-time data streams ၏ hash တွက်ချက်မှုများကိုသင်ပိုမိုထိရောက်စွာကိုင်တွယ်နိုင်သည်။ ဤနည်းလမ်းသည်မှတ်ဥာဏ်ကိုကယ်တင်ရုံသာမက command line တွင်ရိုးရှင်းသောနှင့်အစာရှောင်သော hash တွက်ချက်မှုများကိုလည်းခွင့်ပြုသည်။ အကယ်. သင်သည်ကြီးမားသောဖိုင်သို့မဟုတ် streaming data ကိုလုပ်ဆောင်နေပါကဤ streaming method ကိုအလွန်အမင်းအကြံပြုပါသည်။

command line အပေါ်ဆေးကြောရန်အတွက် PHP ကိုမည်သို့အသုံးပြုရမည်ကိုနားလည်ရန်ဤဆောင်းပါးကသင့်အားနားလည်ရန်ကူညီလိမ့်မည်ဟုမျှော်လင့်ပါ။ သင့်တွင်မေးခွန်းများသို့မဟုတ်နောက်ထပ်မေးခွန်းများရှိပါကကျွန်ုပ်အားအခမဲ့မေးမြန်းပါ။