PHP တွင် Streams သည်ဖိုင်များ, ကွန်ယက်ချိတ်ဆက်မှုများ, input နှင့် output output များကိုကိုင်တွယ်ရန်အဓိကယန္တရားတစ်ခုဖြစ်သည်။ PHP သည်အားကောင်းသော stream processing interface ကိုထောက်ပံ့ပေးသည်။ အထူးသဖြင့်သင်စမ်းချောင်းတစ်ခုတွင်အချက်အလက်များကို filter လုပ်ရန်နှင့်လုပ်ငန်းစဉ်တွင်လုပ်ဆောင်ရန်လိုအပ်သည့်အခါ stream_get_filters နှင့် stream_filters နှင့် stream_filter_append သည်အလွန်အသုံးဝင်သောကိရိယာများဖြစ်သည်။
stream_get_filters function ကိုရရှိနိုင်သည့် filter filter အမည်များအားလုံးပါ 0 င်သည့်ခင်းကျင်းမှုကိုပြန်လည်ရောက်ရှိစေသည်။ Stream filter တစ်ခုသည်စမ်းချောင်းတစ်ခုတွင်အချက်အလက်များကိုထုတ်ယူရန်အတွက်ယန္တရားတစ်ခုဖြစ်သည်။ ၎င်းသည်စီးဆင်းမှုအချက်အလက်များကိုမတူညီသောနည်းလမ်းများဖြင့်ဖတ်ရန်, ရေးရန်သို့မဟုတ်ပြုပြင်ရန်ခွင့်ပြုသည်။
$filters = stream_get_filters();
print_r($filters);
အထက်ပါကုဒ်သည်မှတ်ပုံတင်ထားသော stream filters အားလုံးကိုစာရင်းပြုစုလိမ့်မည်။ အချက်အလက်များကို encoding, encryption, compression စသည်စသည်တို့ကဲ့သို့သော streaming data များကိုကွဲပြားစွာပြုလုပ်ရန်ဤစစ်ထုတ်စက်များကိုသင်အသုံးပြုနိုင်သည်။
stream_filter_append function က filter ကိုသတ်မှတ်ထားသောစမ်းချောင်းတစ်ခုသို့ဖြည့်ရန်ခွင့်ပြုသည်။ ဤလုပ်ဆောင်ချက်နှင့်အတူကျွန်ုပ်တို့သည်စမ်းချောင်းများကိုတကယ့်အချိန်အတွက်အချက်အလက်များကို process လုပ်ရန် Open SCRES သို့ဖြည့်ဆော့ဖ်ဝဲများကိုသုံးနိုင်သည်။ ဤလုပ်ဆောင်ချက်၏ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
stream_filter_append($stream, $filtername, $read_write = STREAM_FILTER_READ, $params = null);
$ stream : နောက်ထပ်စစ်ထုတ်ကိရိယာများလိုအပ်သည့် stream အရင်းအမြစ်။
$ forpilame : filter ၏အမည်။
$ Read_write : filter ကိုဖတ်သည့် stream တစ်ခု, ရေးချောင်းတစ်ခု,
$ params : အပို parameters တွေကို filter ကိုဖြတ်သန်း။
PHP, stream_get_filters နှင့် stream_filter_aptend အတွက် stream data ကိုထိရောက်စွာလုပ်ဆောင်ရန်လိုအပ်သည့်အခါသင်အတူတကွလိုအပ်ချက်များအရမှန်ကန်သော filter ကိုရွေးချယ်ရန်ခွင့်ပြုပါ။
file streams များကို stream_get_filters နှင့် stream_filter_append ကို အသုံးပြု. ဥပမာတစ်ခုမှာ -
<?php
// ရရှိနိုင်သည့် stream filter အားလုံးကိုရယူပါ
$filters = stream_get_filters();
echo "ရရှိနိုင် filter များ:\n";
print_r($filters);
// ဖိုင်စီးကိုဖွင့်ပါ
$file = fopen('example.txt', 'r+');
if (!$file) {
die('ဖိုင်ကိုဖွင့ ်. မရပါ');
}
// ဒေတာများကိုစာလုံးအကြီးသို့ပြောင်းပါ(ဒီ filter ကိုတည်ရှိသည်ယူဆ)
$filter_name = 'string.toupper';
// filter ကိုတည်ရှိရှိမရှိစစ်ဆေးပါ
if (in_array($filter_name, $filters)) {
// file ကို filter သို့ filter ကိုပူးတွဲပါ
stream_filter_append($file, $filter_name, STREAM_FILTER_READ);
echo "စစ်ထုတ်ကိရိယာများကိုထည့်သွင်းထားသည် '$filter_name' fileweam ပူးတွဲပါ\n";
} else {
echo "စိမ့်ထွက် '$filter_name' မတည်ရှိပါဘူး\n";
}
// ဖိုင်ဒေတာနှင့် output ကိုဖတ်ပါ
while (($line = fgets($file)) !== false) {
echo $line;
}
// ဖိုင်စီးကိုပိတ်ပါ
fclose($file);
?>
အထက်ပါကုဒ်တွင် Stream_get_Filters များကို ရရှိနိုင်သည့် stream filter များအားလုံးရရှိရန်အတွက်ပထမ ဦး ဆုံးအသုံးပြုသည်။ ထို့နောက် string.toupper ဟုခေါ်သော filter ကိုစစ်ဆေးပါ။ filter ကိုတည်ရှိပါကဖိုင်အတွင်းရှိအချက်အလက်များသို့အချက်အလက်အားလုံးကိုစာလုံးများသို့ပြောင်းရန် stream_filter_append သုံး. file stream သို့ဖြည့်စွက်ပါ။
stream filter များဖြင့်အချက်အလက်များကိုမှတ်ဉာဏ်ထဲမထည့်ဘဲအချက်အလက်အပြောင်းအလဲများကိုလွှင့်ခြင်းမရှိဘဲအချက်အလက်များကိုပြုပြင်ခြင်းများပြုလုပ်နိုင်သည့်အချက်အလက်များကိုပြုပြင်ခြင်းပြုလုပ်နိုင်သည်။ အချက်အလက်အမြောက်အများကိုပြုပြင်ရန်အတွက်အထူးထိရောက်စွာဖြစ်သည်။ ဥပမာအားဖြင့်, ကြီးမားသောဖိုင်များကိုပြုပြင်သည့်အခါ stream filter များကိုအသုံးပြုခြင်းသည်ဒေတာလိုင်းကိုလိုင်းဖြင့်ဖတ်နိုင်ပြီးဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့ 0 င်ရောက်ခြင်း,
Stream filter များကိုစီးဆင်းစေရန်သာမကကွန်ယက်ဆက်သွယ်မှုများကဲ့သို့သောအခြားချောင်းများသို့လည်းအသုံးပြုနိုင်သည်။ ကွန်ယက်စီးဆင်းမှုမှဒေတာများကိုဖတ်ရန်နှင့် encryption ကိုထုတ်လွှင့်ရန်လိုအပ်ဟုယူဆပြီး၎င်းကိုသင်လုပ်နိုင်သည်။
<?php
// တစ်ခုဖွင့်လှစ် gitbox.net ကွန်ယက်ချိတ်ဆက်မှု
$fp = fopen("tcp://gitbox.net:80", "r+");
if (!$fp) {
die("ဆာဗာကို ဆက်သွယ်. မရပါ");
}
// 添加加密စိမ့်ထွက်
$filter_name = 'mcrypt.des';
stream_filter_append($fp, $filter_name, STREAM_FILTER_READ);
// စာဝှက်ထားတဲ့ဒေတာတွေကိုဖတ်ပါ
$data = fread($fp, 1024);
echo "စာဝှက်ထားတဲ့ဒေတာ: " . $data;
// ဆက်သွယ်မှုကိုပိတ်ပါ
fclose($fp);
?>
ဤဥပမာတွင် Gitbox.net သို့ TCP ဆက်သွယ်မှုကိုဖွင့်ပြီးစီးဆင်းရန်စာဝှက်စနစ် filter ကိုသုံးပါ။ ၎င်းသည်ကွန်ယက်ဒေတာထုတ်လွှင့်သည့်အခါဒေတာလုံခြုံရေးကိုသေချာစေသည်။
stream_get_filters နှင့် stream_filter_append ပေါင်းစပ်ခြင်းဖြင့် PHP developer များက streaming developer များက streaming data များကိုပြောင်းလွယ်ပြင်လွယ်အချက်အလက်များကိုပြောင်းလဲစေနိုင်သည်။