Stream Data processing သည် PHP တွင်အထူးသဖြင့်အချက်အလက်အမြောက်အများကိုပြုပြင်သည့်အခါ streaming လုပ်ငန်းများသည်ပိုမိုထိရောက်သောစစ်ဆင်ရေးများနှင့်စွမ်းဆောင်ရည်ကိုပိုမိုထိရောက်စွာစီမံခန့်ခွဲခြင်းနှင့်စွမ်းဆောင်ရည်ကိုပိုမိုထိရောက်စွာလုပ်ဆောင်သည်။ သို့သော် PHP developer များစွာသည် stream_get_filters function များ၏အားသာချက်များကိုအပြည့်အဝအသုံးချခြင်းမပြုနိုင်ပါ။
stream_get_filters သည် PHP မှပါ 0 င်သော function ကိုလက်ရှိရရှိနိုင်သည့်စမ်းချောင်းများကိုပြန်ပေးရန် PHP မှထည့်သွင်းထားသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ Data compression, encryption စသည့်အချက်အလက်များကိုဖတ်ရှုခြင်းသို့မဟုတ်စာဖတ်ခြင်းကိုဖတ်ခြင်းသို့မဟုတ်ရေးသားခြင်းကိုဖတ်ခြင်းသို့မဟုတ်ရေးသားခြင်းသည်အချက်အလက်များကိုလုပ်ဆောင်နိုင်သည်။
function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
stream_get_filters(): array
Stream_get_Filters ကို သုံးတဲ့အခါ, သင်ပထမရရှိနိုင်သည့် filter list ကိုပထမဆုံးရနိုင်သည်။ ဤစစ်ထုတ်စက်များကို stream_filter_append သို့မဟုတ် stream_filter_proilter_proiltrec မှတဆင့်လျှောက်ထားနိုင်သည်။
$filters = stream_get_filters();
print_r($filters);
ဤကုဒ်သည်လက်ရှိစနစ်တွင်ရရှိနိုင်သည့် filter အားလုံးကိုရရှိနိုင်ပါသည်။ ဥပမာအားဖြင့်, အောက်ပါနှင့်ဆင်တူသည့် output ကိုသင်တွေ့လိမ့်မည်။
Array
(
[0] => zlib.inflate
[1] => zlib.deflate
[2] => convert.iconv.*
[3] => string.rot13
[4] => string.toupper
)
ဤစစ်ထုတ်ခြင်းများကိုချုံ့ခြင်း, ပြောင်းလဲခြင်း encoding, string string string စသည်တို့အတွက်ဤစစ်ထုတ်ခြင်းများအတွက်ဤစစ်ထုတ်ခြင်းဆိုင်ရာလိုအပ်ချက်များအတွက်အသုံးပြုနိုင်သည်။
stream_filter_append သို့မဟုတ် stream_filter_preilter_preilter_preilte မှတဆင့်ထုတ်လွှင့်ရန်စစ်ထုတ်ကိရိယာများကိုလျှောက်ထားနိုင်သည်။ Stream အချက်အလက်များကိုစာဖတ်ချိန်တွင် decomfress ကို decomfress လုပ်ရန် Zlib.inflate ကို မည်သို့အသုံးပြုရမည်ကိုပြသသည့်ဥပမာတစ်ခုဖြစ်သည်။
$stream = fopen('php://memory', 'r+');
fwrite($stream, gzcompress("ဤသည် decompressed ခံရဖို့လိုအပ်တဲ့ string ကိုဖြစ်ပါတယ်"));
rewind($stream);
// အသုံးပြု zlib.inflate decompression ဒေတာ filter ကို filter
stream_filter_append($stream, 'zlib.inflate');
// decompressed ဒေတာကိုဖတ်ပါ
echo stream_get_contents($stream);
fclose($stream);
ဒီဥပမာမှာကျွန်တော်တို့ဟာ compressed string ကိုစီးပြီး Zlib.inflate filter ကိုသုံးပြီး decompress လုပ်တယ်။ စမ်းချောင်းကိုဖတ်တဲ့အခါ, unzipped ကုန်ကြမ်းဒေတာကိုသင်တွေ့လိမ့်မည်။
အကြီးစားအချက်အလက်အပြောင်းအလဲအတွက်, stream filter များသည်အချက်အလက်များကိုမှတ်ဉာဏ်ထဲသို့ 0 ယ်ခြင်းထက် streaming data များပေါ်တွင်တိုက်ရိုက်စီးဆင်းနေသောကြောင့် stream filter များသည် memory စားသုံးမှုကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ ဥပမာအားဖြင့် data compression သို့မဟုတ် concoding အတွက် zlib.deflate ကို သုံးခြင်း
သင့်တွင်ဇာတ်လမ်းတစ်ပုဒ်ရှိရန်လိုအပ်သည်ဆိုပါစို့။ အချက်အလက်အမြောက်အများကိုအသုံးပြုရန်လိုအပ်သည့် spril ကိုအသုံးပြုခြင်းသည်အချက်အလက်များကိုချုံ့ခြင်းသာမကမှတ်ဉာဏ်အလံများကိုရှောင်ရှားနိုင်သည်ဆိုပါစို့။
$stream = fopen('php://memory', 'r+');
$largeData = str_repeat('ဒါကဒေတာတွေအများကြီးပါ。', 10000);
fwrite($stream, gzcompress($largeData));
rewind($stream);
stream_filter_append($stream, 'zlib.inflate');
$uncompressedData = stream_get_contents($stream);
echo strlen($uncompressedData); // decompressed ဒေတာအရှည် output
fclose($stream);
အချက်အလက်များကိုထုတ်ယူသောအခါ stream filter များကိုအသုံးပြုခြင်းသည်မှတ်ဥာဏ်သုံးစွဲမှုကိုလျှော့ချပြီးအချက်အလက်အပြောင်းအလဲမြန်နှုန်းကိုတိုးစေသည်။
တခါတရံတွင်ကျွန်ုပ်တို့သည် Network Stream မှအချက်အလက်များကိုဖတ်ရှုရန်လိုအပ်သည်။ http://example.com/data.txt ကဲ့သို့သော URL ရှိသည်ဆိုပါစို့။ ဒီ URL မှစီးဆင်းနေသောအချက်အလက်များကို process filter တစ်ခုကိုသုံးနိုင်သည်ဆိုပါစို့။
$stream = fopen('http://gitbox.net/data.txt', 'r');
stream_filter_append($stream, 'convert.iconv.utf-8/iso-8859-1');
$data = stream_get_contents($stream);
echo $data;
fclose($stream);
ဤဥပမာတွင် http://gitbox.net/data.txt သည် utf-8 encoding ပါ 0 င်သည့်ဖိုင်တစ်ခုဖြစ်ပြီး ITF-8859 န်းစီကို convert.ICONV.UTF-8 / ISO-8859-1 filter ကိုအသုံးပြုသည်။
PHP ၏ built-in stream filter အပြင် developer များသည်လည်းစိတ်ကြိုက် stream filter များကိုလည်းဖန်တီးနိုင်သည်။ ဤစိတ်ကြိုက်စစ်ထုတ်စက်များသည်အထူးအချက်အလက်များပြောင်းလဲခြင်းလိုအပ်ချက်များကိုကိုင်တွယ်ရန်သင့်အားကူညီနိုင်သည်။
class MyFilter extends php_user_filter {
public function filter($context) {
$buffer = $this->getBuffer();
// စိတ်ကြိုက်ဒေတာအပြောင်းအလဲနဲ့ဒီမှာဖျော်ဖြေသည်
$buffer = strtoupper($buffer); // data ကိုအရင်းအနှီးသို့ပြောင်းပါ
$this->push($buffer);
}
}
// Custom Filter တစ်ခုကိုမှတ်ပုံတင်ပါ
stream_filter_register("my.uppercase", "MyFilter");
// အသုံးပြု自定义过滤器
$stream = fopen('php://temp', 'r+');
fwrite($stream, 'hello world');
rewind($stream);
// ထုံးစံ filter များလျှောက်ထားပါ
stream_filter_append($stream, 'my.uppercase');
echo stream_get_contents($stream); // ထုတ်လုပ်ခြင်း 'HELLO WORLD'
fclose($stream);
stream_get_filters function က PHP developer များကို streaming data processing processing cordabilitogude များဖြင့်ထောက်ပံ့ပေးသည်။ Memory အသုံးပြုမှုနှင့်စွမ်းဆောင်ရည်များသည်ရရှိနိုင်သည့် stream filter များကိုကြည့်ခြင်းနှင့်အထူးသဖြင့်အကြီးစားအချက်အလက်များနှင့်ဆက်ဆံရာတွင်၎င်းတို့အားပြောင်းလွယ်ပြင်လွယ်သွားရန်ပြောင်းလွယ်ပြင်လွယ်သွားစေရန်ပြောင်းလွယ်ပြင်နိုင်ကိုအသုံးချခြင်းဖြင့်အကောင်းဆုံးကိုအကောင်းဆုံးအသုံးချနိုင်သည်။ ထို့အပြင် custom filter များနှင့်ပေါင်းစပ်ပြီး, တိကျသောစီးပွားရေးလိုအပ်ချက်များကိုသင်ပိုမိုဂန်ထူးဒေတာအပြောင်းအလဲကိုပြုလုပ်နိုင်သည်။
၎င်းသည်ဒေတာချုံ့ခြင်း, encoding ပြောင်းလဲခြင်းသို့မဟုတ် string string string ကိုစစ်ဆင်ရေး, stream filding များသည် stream အချက်အလက်များကိုပိုမိုထိရောက်စွာလုပ်ဆောင်နိုင်အောင်ကူညီနိုင်သည်။