လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> file flow filter များကိုရရန် Stream_get_Filters ကိုသုံးပါ

file flow filter များကိုရရန် Stream_get_Filters ကိုသုံးပါ

gitbox 2025-05-19

PHP တွင်၎င်းသည်ဖိုင်များ, ကွန်ယက်များ, မှတ်ဥာဏ်စသဖြင့်ဖတ်ရန် (သို့) စာဖတ်ခြင်းကိုဖတ်ရန်သို့မဟုတ်ရေးသားထားသောအခါအချက်အလက်များပြောင်းလဲခြင်းသို့မဟုတ်လုပ်ဆောင်နိုင်သည့်အလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ရိုးရှင်းသောဥပမာတစ်ခုပေးရန်ဖိုင်များကိုဖတ်ရှုသောအခါသင် compress ကိုအလိုအလျောက်ချုံ့ခြင်း,

PHP ပရိုဂရမ်များ၏စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန်ပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်ရန်အတွက်လက်ရှိစနစ်တွင် Stream filter များကိုမည်သည့် stream များကိုရရှိနိုင်မည်ကိုသိရန်လိုအပ်သည်။ ထို့နောက်ကျွန်ုပ်တို့သည် stream_get_filters () function ကိုသုံးနိုင်သည်

Stream_get_Filters ဆိုတာဘာလဲ။

Stream_get_Filters () သည် PHP တွင်ပါ 0 င်သော function တစ်ခုဖြစ်သည်။ ၎င်း၏အခြေခံအသုံးပြုမှုသည်အလွန်ရိုးရှင်းပါသည်။

 $filters = stream_get_filters();
print_r($filters);

output သည်ဤကဲ့သို့သောပုံကိုကြည့်ကောင်းနိုင်သည်။

 Array
(
    [0] => string.rot13
    [1] => string.toupper
    [2] => string.tolower
    [3] => convert.iconv.*
    [4] => convert.*
    [5] => zlib.*
    [6] => bzip2.*
)

ဤစစ်ထုတ်စက်များ၏အမည်များကို stream_filter_append () သို့မဟုတ် stream_filter_prustepeal () သို့မဟုတ် stream_filter_proilter_proilter_proilter_propewe ()) ကိုစီး။ သုံးနိုင်သည်။

စွမ်းဆောင်ရည်တိုးတက်စေရန် Flow filter ကိုမည်သို့အသုံးပြုရမည်နည်း။

stream_get_filters () သည်စာရင်းတစ်ခုသာရှိသော်လည်း filter များကိုအသုံးပြုခြင်းသည်အချက်အလက်များပြုပြင်ခြင်းစီးဆင်းမှုစီးဆင်းမှုကိုသိသိသာသာလျှော့ချနိုင်သည်။

ဤတွင်အနည်းငယ်သာအကောင်းဆုံးသောအကြံပြုချက်များနှင့်ဥပမာအနည်းငယ်ရှိပါတယ်:

1 ?? Manual Loop processing ကိုရှောင်ပါ

သင်ဖတ်ရှုရန်ဖိုင်အကြောင်းအရာကို compress သို့မဟုတ် encode လုပ်ရန်လိုအပ်ပါက၎င်းကိုလုပ်ဆောင်ရန် loop ကိုသုံးရန်မလိုပါ, သို့သော် filter ကိုတိုက်ရိုက်သုံးနိုင်သည်။

ဥပမာအားဖြင့်, အလိုအလျောက် gzip compressed ဖိုင်ရေးသားခြင်း:

 $filename = 'example.txt.gz';
$fp = fopen($filename, 'w');
stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE);
fwrite($fp, 'ဤသည် compressed ခံရဖို့လိုအပ်ပါတယ်သောစာသားအပိုင်းအစတစ်ခုဖြစ်သည်。');
fclose($fp);

ဤကုဒ်သည်အချက်အလက်များကို gzip compression တွင် pegent.txt.gz ဖိုင်ကိုတိုက်ရိုက်ရေးသားခြင်း, လက်ဖြင့်ချုံ့ခြင်းနှင့်ဖိုင်အမျိုးအစားများစွာကိုရှောင်ရှားခြင်းနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်နှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်ပြုလုပ်ခြင်းဖြင့်အချက်အလက်များကိုတိုက်ရိုက်ရေးသားခဲ့သည်။

2 ?? အလယ်အလတ်သိုလှောင်မှုကိုလျှော့ချပါ

ITF-8 encoded text file ကို ISO-8859-1 သို့ encoded storage ထဲသို့ပြောင်းရန်လိုအပ်သည်ဆိုပါစို့။ ၎င်းကိုမှတ်ဥာဏ်ကိုအရင်ဖတ်ရန်မလိုအပ်ပါ။ ထို့နောက် ICONV () ကို သုံးရန်မလိုအပ်ပါ။

 $source = fopen('utf8file.txt', 'r');
$target = fopen('convertedfile.txt', 'w');
stream_filter_append($target, 'convert.iconv.UTF-8/ISO-8859-1', STREAM_FILTER_WRITE);

while (!feof($source)) {
    $line = fgets($source);
    fwrite($target, $line);
}

fclose($source);
fclose($target);

3 ?? စိတ်ကြိုက် filter များနှင့်အတူပေါင်းစပ်၌တည်၏

PHP သည် log filtering, အထိခိုက်မခံစကားလုံးအစားထိုးခြင်းစသည့်သီးခြားစီးပွားရေးအခြေအနေများအတွက်အထူးအသုံးဝင်သည့်ထုံးစံစီးပွါးရေး filmits များကိုမှတ်ပုံတင်ခွင့်ပြုသည်။

 class UpperCaseFilter extends php_user_filter {
    function filter($in, $out, &$consumed, $closing) {
        while ($bucket = stream_bucket_make_writeable($in)) {
            $bucket->data = strtoupper($bucket->data);
            $consumed += $bucket->datalen;
            stream_bucket_append($out, $bucket);
        }
        return PSFS_PASS_ON;
    }
}

// filter ကိုမှတ်ပုံတင်ပါ
stream_filter_register('string.uppercase', 'UpperCaseFilter');

// filter များအသုံးပြုခြင်း
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.uppercase');
fwrite($fp, 'hello gitbox.net!');
fclose($fp);

output ကိုဖြစ်လိမ့်မည်:

 HELLO GITBOX.NET!

အကျဉ်းချုပ်

stream_get_filters () သည်စွမ်းဆောင်ရည်အကောင်းဆုံးအတွက်အစမှတ်ဖြစ်သည်။ ၎င်းသည်မည်သည့်ကိရိယာများကိုရရှိနိုင်ပါသည်။

? built-in filter များအပြီး manual data data အပြောင်းအလဲနဲ့လျှော့ချပါ
? Redundant Memory နှင့် I / O စစ်ဆင်ရေးများကိုရှောင်ပါ
? သင်၏စီးပွားရေးအခြေအနေနှင့်ကိုက်ညီရန်ထုံးစံ filter များကိုရေးပြီးအသုံးချပါ

ဤနည်းလမ်းများမှတစ်ဆင့် PHP ၏စွမ်းဆောင်ရည်ကိုဖိုင်စီးဆင်းမှု, ကွန်ရက်စီးဆင်းမှု, မှတ်ဥာဏ်စီးဆင်းမှုနှင့်အခြားအခြေအနေများတွင် PHP ၏စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်အောင်လုပ်နိုင်သည်။

သင်ပိုမိုသိလိုပါကတရားဝင်စာရွက်စာတမ်းများကိုစစ်ဆေးပါ။
https://www.gitbox.net/manual/en/function.streamction.php