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

စွမ်းဆောင်ရည်မြင့်မှတ်တမ်းတင်ပရိုဂျက်ရေးအောင်မြင်ရန် Stream_get_Filters ကိုအသုံးပြုနည်း။

gitbox 2025-05-20

မှတ်တမ်းပြုပြင်ခြင်းဆိုသည်မှာနေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှု၏မရှိမဖြစ်လိုအပ်သောအစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ အထူးသဖြင့်မှတ်တမ်းဒေတာအမြောက်အများကိုပြုပြင်သည့်အခါဤမှတ်တမ်းများကိုမည်သို့ထိရောက်စွာဖတ်ရှုနိုင်သည့်အတွက်ဤမှတ်တမ်းများသည် developer များအတွက်အရေးကြီးသောကိစ္စတစ်ခုဖြစ်လာသည်။ PHP သည်ဖိုင်များနှင့်ချောင်းများကိုကိုင်တွယ်ရန် built-in functions များစွာကိုထောက်ပံ့ပေးသည်

ဤဆောင်းပါးသည်အတိမ်အနက်ကိုစူးစမ်းလေ့လာနိုင်သည်

Stream_get_Filters ဆိုတာဘာလဲ။

Stream_get_Filters သည် PHP တွင် funter filter များစာရင်းကိုရရှိရန် PHP တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ stream files များသည် streamess stream အချက်အလက်များကို preerecess data များကိုပြုလုပ်နိုင်သည်။ များသောအားဖြင့်အချက်အလက်များကိုဖတ်ရန်သို့မဟုတ်ရေးသားသည့်အခါပြောင်းလဲလေ့ရှိသည်။ ဒီ function ကိုအတူလက်ရှိရရှိနိုင်သည့်စစ်ထုတ်စက်များကိုကြည့်ရှုခြင်းနှင့် Log Stream ကိုကိုင်တွယ်ရန်၎င်းတို့ကိုသုံးနိုင်သည်။

stream filter များမှတဆင့်မှတ်တမ်းများ process လုပ်နည်း။

ကျွန်ုပ်တို့တွင်ကောင်းမွန်သောမှတ်တမ်းဖိုင်ရှိသည်ဆိုပါစို့။ ဖိုင်တစ်ခုလုံးကိုတိုက်ရိုက်ဖတ်ပြီးလည်ပတ်ရန်အလွန်မတတ်နိုင်သောကြောင့်၎င်းသည်အလွန်မတတ်နိုင်သောကြောင့်ဖြစ်သည်။ stream filter များကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဒေတာစီးဆင်းမှုများကိုအမှန်တကယ်အချိန်မှန်တွင်လုပ်ဆောင်နိုင်ပြီးမှတ်ဉာဏ်သုံးစွဲမှုကိုလျှော့ချခြင်းနှင့်လုပ်ဆောင်မှုကိုတိုးတက်စေသည်။

ဥပမာ - မှတ်တမ်းများကိုဖတ်ပြီးစစ်ထုတ်ပါ

ကျွန်ုပ်တို့သည် log file တစ်ခုကိုဖတ်ရန်လိုသည်ဆိုပါစို့။ ကျွန်ုပ်တို့သည်အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုထုတ်ယူလိုပါက (အသုံးပြုသူစကားဝှက်ကဲ့သို့) ကိုစစ် ထုတ်လိုသည်ဆိုပါစို့။

 <?php
// ရရှိနိုင်သည့် stream filter အားလုံးကိုရယူပါ
$filters = stream_get_filters();
print_r($filters);  // အားလုံး filter များ output

// မှတ်တမ်းဖိုင်ကိုဖွင့်ပါ
$logFile = fopen('logfile.log', 'r');

// သင့်လျော်သော filter ကိုထောက်ပံ့မရှိမရှိစစ်ဆေးပါ
if (in_array('string.toupper', $filters)) {
    // apply filter များ,Log အကြောင်းအရာများကိုစာလုံးအကြီးသို့ပြောင်းပါ
    stream_filter_append($logFile, 'string.toupper');
}

// မှတ်တမ်းဖိုင်များကိုဖတ်ပါ
while ($line = fgets($logFile)) {
    // ဒီမှာအတန်းတစ်ခုချင်းစီအတွက်မှတ်တမ်းများ process
    echo $line;
}

fclose($logFile);
?>

ဤဥပမာတွင် STREAM_GIT_FITERS ကို ရရှိနိုင်သည့် stream filter များအားလုံးရရှိရန်အတွက်ပထမ ဦး ဆုံးအသုံးပြုသည်။ ထို့နောက် string ကို string.toupper ကိုပြောင်းလဲနိုင်သော filter တစ်ခုရှိမရှိစစ်ဆေးပါ။ ထို့နောက်ကျွန်ုပ်တို့သည်ဤ filter ကို load_filter_append function မှတဆင့် log spream သို့လျှောက်ထားပါ။

ဥပမာ: SuperiChitive သတင်းအချက်အလက် filter

သုံးစွဲသူ၏စကားဝှက်ကဲ့သို့သော log တွင်အထိခိုက်မခံနိုင်သောသတင်းအချက်အလက်များကိုကျွန်ုပ်တို့စစ်ထုတ်လိုပါကကျွန်ုပ်တို့သည်စိတ်ကြိုက် filter တစ်ခုကိုဖန်တီးနိုင်သည်။

 <?php
// filter callback function ကိုသတ်မှတ်ပါ
function filterSensitiveInfo($in, $out, &$consumed, &$closed) {
    // စမ်းချောင်းတွင်အချက်အလက်များကိုဖတ်ပြီးအထိခိုက်မခံသောသတင်းအချက်အလက်များကိုအစားထိုးပါ
    $data = stream_get_contents($in);
    $data = preg_replace('/password=[^&]+/', 'password=[REDACTED]', $data);
    // output ကိုစီးဆင်းမှုကိုအစားထိုးဒေတာကိုရေးပါ
    fwrite($out, $data);
    return PSFS_PASS_ON;
}

// Custom Filter တစ်ခုကိုမှတ်ပုံတင်ပါ
stream_filter_register('filter.sensitive', 'filterSensitiveInfo');

// မှတ်တမ်းဖိုင်ကိုဖွင့်ပါ
$logFile = fopen('logfile.log', 'r');

// ထုံးစံ filter များလျှောက်ထားပါ
stream_filter_append($logFile, 'filter.sensitive');

// မှတ်တမ်းဖိုင်များကိုဖတ်ပါ并处理
while ($line = fgets($logFile)) {
    echo $line;
}

fclose($logFile);
?>

ဤဥပမာတွင်ကျွန်ုပ်တို့သည်စိတ်ကြိုက် filter filter.sensitive ကို မှတ်တမ်းတွင်အစားထိုးရန်အတွက်အထိခိုက်မခံသောအချက်အလက်များကိုအစားထိုးရန် (အသုံးပြုသူစကားဝှက်ကဲ့သို့) အစားထိုးရန်။ ဤ filter_filter_register မှတဆင့်ဤစစ်ထုတ်မှုကိုမှတ်ပုံတင်ပြီးနောက်ကျွန်ုပ်တို့သည် log ကိုဖတ်သည့်အခါတိုင်းဤအထိခိုက်မခံသောသတင်းအချက်အလက်များကိုအလိုအလျောက်စစ်ထုတ်သည်။

filter များဖြင့်စွမ်းဆောင်ရည်ကိုအကောင်းဆုံးလုပ်ပါ

စွမ်းဆောင်ရည်သည်ကြီးမားသောသစ်ထုတ်လုပ်ရေးကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါအရေးကြီးသောထည့်သွင်းစဉ်းစားစရာဖြစ်သည်။ stream filter တစ်ခုဖြင့်ဖိုင်တစ်ခုလုံးကို memory ထဲသို့ထည့်ခြင်းအစားအချက်အလက်များကိုမှတ်ဉာဏ်ထဲသို့ 0 ယ်မည့်အစားဒေတာကိုမှတ်ဉာဏ်ထဲသို့ 0 င်ရောက်မည့်အစားအချက်အလက်များကိုဖတ်ရှုရာတွင်ချက်ချင်းလုပ်ဆောင်နိုင်သည်။

ဥပမာအားဖြင့်, အောက်ပါကုဒ်များသည် log stram ကိုသတ်မှတ်ထားသော encoding သို့ပြောင်းလဲခြင်းဖြင့်မှတ်ဉာဏ်ခြေရာကိုမည်သို့လျှော့ချရမည်ကိုပြသသည်။

 <?php
// ရရှိနိုင် stream filter များကိုရယူပါ
$filters = stream_get_filters();

// မှတ်တမ်းဖိုင်ကိုဖွင့်ပါ
$logFile = fopen('logfile.log', 'r');

// သင့်လျော်သော filter ကိုထောက်ပံ့မရှိမရှိစစ်ဆေးပါ
if (in_array('convert.iconv.utf-8.utf-16', $filters)) {
    // ထံမှဒေတာလွှဲပြောင်းUTF-8ကူးပြောင်းUTF-16
    stream_filter_append($logFile, 'convert.iconv.utf-8.utf-16');
}

// မှတ်တမ်းများကိုဖတ်ပါ
while ($line = fgets($logFile)) {
    echo $line;
}

fclose($logFile);
?>

ဤဥပမာတွင်ကျွန်ုပ်တို့သည် Stream filter တစ်ခုကို အသုံးပြု . OutF-8 မှ UTF-16 မှ UTF-16 အထိ Rewarding Transfer filter ကိုအသုံးပြုခဲ့သည်။ ဤနည်းလမ်းသည်ဖိုင်တစ်ခုလုံးကိုကူးပြောင်းခြင်းအတွက်ပထမ ဦး စွာမှတ်ဉာဏ်ထဲသို့မတင်ရန်တားဆီးနိုင်သည်။

အကျဉ်းချုပ်

stream_get_filters function ဟာ PHP မှာ streaming data processing အတွက်အားကောင်းတဲ့ကိရိယာတခုဖြစ်တယ်။ ၎င်းနှင့်အတူကျွန်ုပ်တို့သည် built-in stream filters အမျိုးမျိုးကိုကြည့်ရှု။ အသုံးပြုနိုင်ပြီး log streams များကိုကိုင်တွယ်ရန်စိတ်ကြိုက်စစ်ထုတ်ကိရိယာများကိုပင်ဖန်တီးနိုင်သည်။ stream_filter_append နှင့်အခြားစီးပွါးရေးလည်ပတ်မှုများပေါင်းစပ်ပြီးအခြားစီးပွါးရေးလည်ပတ်မှုလုပ်ငန်းများကိုကျွန်ုပ်တို့အကောင်အထည်ဖော်နိုင်ပြီးအချက်အလက်အမြောက်အများလိုအပ်သည့်အခြေအနေများလိုအပ်သည့်အခြေအနေများအတွက်သင့်တော်သည်။ အချိန်နှင့်တပြေးညီဒေတာများကိုပြုပြင်ခြင်းဖြင့်ကျွန်ုပ်တို့သည်မှတ်ဉာဏ်အသုံးပြုမှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်ပြီးစွမ်းဆောင်ရည်တိုးတက်ကောင်းမွန်စေပြီး Log Managemy ထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။

log data များပြုလုပ်ရန် PHP ၏ stream filters များကိုမည်သို့အသုံးပြုရမည်ကိုပိုမိုနားလည်သဘောပေါက်ရန်ဤဆောင်းပါးကသင့်အားပိုမိုကောင်းမွန်သောနားလည်မှုကိုပိုမိုနားလည်ရန်မျှော်လင့်ပါသည်။ အကယ်. သင့်တွင်မေးခွန်းများရှိပါက PHP streams များနှင့်စစ်ထုတ်စက်များအကြောင်းပိုမိုလေ့လာလိုပါက ကျေးဇူးပြု. စာတစ်စောင်ချန်ထားပါ။