PHP PHP သည်အမျိုးမျိုးသောအချက်အလက်များစီးဆင်းမှုအမျိုးအစားများအပါအ 0 င်အလွန်အစွမ်းထက်သော stream processing စွမ်းရည်များကိုပေးသည်။ stream_get_filters function သည်အလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ Custom Streaming protocols များအပါအ 0 င်လက်ရှိ PHP ပတ်ဝန်းကျင်တွင်မှတ်ပုံတင်ထားသော filter အားလုံးကိုစစ်ဆေးရန်ကူညီပေးသောအလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးတွင် Custom Stream Protocol သည်စစ်ထုတ်သည့်စစ်ထုတ်ကိရိယာများကိုအထောက်အပံ့မရှိမရှိစစ်ဆေးရန် Stream_get_Filters ကို မည်သို့စစ်ဆေးရမည်ကိုလေ့လာမည်။
PHP တွင် Data Stream ၏ input နှင့် output များအတွင်း stream filter များကိုလုပ်ဆောင်ရန်အသုံးပြုသည်။ ဤစစ်ထုတ်စက်များသည် streaming data များကိုပြောင်းလဲခြင်း, ပြုပြင်ခြင်းသို့မဟုတ်အတည်ပြုနိုင်သည်။ PHP သည် string.toupper နှင့် strings.tolers ကဲ့သို့သောအချို့သောစစ်ထုတ်စက်များကိုထောက်ပံ့ပေးသည်။
စမ်းချောင်းများဖတ်ခြင်းနှင့်ရေးသားခြင်းအတွင်း stream filter များကိုအလိုအလျောက်လျှောက်ထားသည်။
stream_get_filters သည် PHP ပတ်ဝန်းကျင်ရှိမှတ်ပုံတင်ထားသော stream filters များ၏အမည်များကိုပြန်လည်ပေးပို့သည့် PHP တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဒီ function ကိုအတူသင်မည်သည့်စစ်ထုတ်ကိရိယာများရရှိနိုင်ပါသည်ကိုစစ်ဆေးနိုင်ပါတယ်။ ရလဒ်မှာရရှိသောရလဒ်မှာ filter အမည်များအားလုံးပါ 0 င်သည်။
<?php
$filters = stream_get_filters();
print_r($filters);
?>
အထက်ပါကုဒ်သည် filter များအားလုံးပါ 0 င်သောခင်းကျင်းမှုကိုထုတ်ပေးသည်။
PHP သည် developer များကို streaming protocol များကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ Custom Streaming protocols များသည် PHP ၏လုပ်ဆောင်မှုစွမ်းရည်ကွဲပြားခြားနားသောဒေတာနေရာများသို့မဟုတ်အချက်အလက်နေရာများအတွက်စွမ်းဆောင်ရည်ကိုတိုးချဲ့ရန်ခွင့်ပြုသည်။ ဥပမာအားဖြင့်, အထူးဒေတာစီးဆင်းမှုကိုကိုင်တွယ်ရန် Gitbox.net protocol ကိုဖန်တီးနိုင်သည်။
Custom protocol များအနေဖြင့်ကျွန်ုပ်တို့သည်အချက်အလက်စီးဆင်းမှုရှိအကြောင်းအရာများကိုကိုင်တွယ်ရန်ကျွန်ုပ်တို့၏ကိုယ်ပိုင်စစ်ထုတ်စက်များကိုအကောင်အထည်ဖော်ရန်လိုအပ်နိုင်သည်။ စိတ်ကြိုက် protocol ကိုစစ်ရေးစစ်သွေးကြွများကိုထောက်ပံ့ရန်သေချာစေရန် protocol အတွက်စစ်ထုတ်သည့်စစ်ထုတ်သည့်စစ်သည်များအား stream_get_filters မှတဆင့်မှတ်ပုံတင်ထားခြင်းရှိမရှိစစ်ဆေးနိုင်သည်။
စစ်ဆေးရန် Custom Streaming Protocol သည်စစ်ထုတ်ကိရိယာများကိုအထောက်အပံ့မရှိမရှိစစ်ဆေးရန်အောက်ပါအဆင့်များတွင်ကျွန်ုပ်တို့လုပ်နိုင်သည်။
စိတ်ကြိုက် protocol ကိုသတ်မှတ်ပါ - ပထမ ဦး စွာ Custom Stream protocol ကိုဖန်တီးပြီးမှတ်ပုံတင်ပါ။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည် Gitbox.net ကို ကျွန်ုပ်တို့၏စိတ်ကြိုက် protocol အဖြစ်အသုံးပြုသည်ဆိုပါစို့။
မှတ်ပုံတင်ခြင်း filter : ဤ protocol အတွက် stream filter တစ်ခုကိုမှတ်ပုံတင်ပါ။
Check Filters - ဤ protocol အတွက်မှတ်ပုံတင်ထားသောစစ်ထုတ်စက်များရှိမရှိစစ်ဆေးရန် Stream_get_Filters များကို စစ်ဆေးပါ။
Gitbox.net protocol ကိုစစ်ထုတ်ပရိုတိုကောကိုဘယ်လိုစစ်ဆေးရမယ်ဆိုတာပြတဲ့ရိုးရှင်းတဲ့ဥပမာတစ်ခုပါ။
<?php
// 1. Custom Streaming protocol ကိုမှတ်ပုံတင်ပါ
stream_wrapper_register("gitbox.net", "GitBoxStreamWrapper");
// 2. မည်သည့် filter ကိုပံ့ပိုးမှုရှိမရှိစစ်ဆေးပါ
$filters = stream_get_filters();
// 3. စစ်ဆေးgitbox.netprotocol filter ကိုမှတ်ပုံတင်ပါသလား။
if (in_array('gitbox.net.filter', $filters)) {
echo "GitBoxFlow Protocol သည် filter များကိုထောက်ပံ့သည်!";
} else {
echo "GitBoxfilter များကို stream protocol ဖြင့်ထောက်ပံ့သည်မဟုတ်。";
}
// စိတ်ကြိုက် streaming protocol အတန်းအစား
class GitBoxStreamWrapper {
public function stream_open($path, $mode, $options, &$opened_path) {
// စိတ်ကြိုက် streaming protocol ကိုယုတ္တိဗေဒဖွင့်လှစ်
return true;
}
public function stream_read($count) {
// ထုံးစံ stream protocols များအတွက်ယုတ္တိဗေဒကိုဖတ်ပါ
return "အချက်များ";
}
public function stream_write($data) {
// စိတ်ကြိုက် streaming protocol ကိုရေးပါ
return strlen($data);
}
}
?>
Gitbox.net protocol အတွက် Custom filter ကိုအကောင်အထည်ဖော်လိုပါကအောက်ပါအဆင့်များကိုဖြတ်သန်းသွားနိုင်သည် -
Filter Class ကိုဖန်တီးပါ ။ Php_User_Filter အတန်းကိုအမွေဆက်ခံပါ။ လိုအပ်သောနည်းလမ်းများကိုအကောင်အထည်ဖော်ပါ။
မှတ်ပုံတင်ခြင်း filter : filter များကိုမှတ်ပုံတင်ရန် steam_filter_register function ကိုသုံးပါ။
filter များ - ဒေတာများကိုလုပ်ဆောင်ရန် Flow operations များကိုအသုံးပြုသော filter များကိုအသေးစိတ်ဖော်ပြပါ။
<?php
// Custom Filter တစ်ခုကိုမှတ်ပုံတင်ပါ
stream_filter_register("gitbox.net.filter", "GitBoxFilter");
// filter class တစ်ခုဖန်တီးပါ
class GitBoxFilter extends php_user_filter {
public function filter($in, $out) {
// 处理အချက်များ,နမူနာ:将အချက်များ转为大写
while ($bucket = stream_bucket_make_writeable($in)) {
$bucket->data = strtoupper($bucket->data);
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
// filter များအသုံးပြုခြင်း
$filters = stream_get_filters();
if (in_array('gitbox.net.filter', $filters)) {
$fp = fopen("gitbox.net://example", "r");
stream_filter_append($fp, "gitbox.net.filter");
echo fread($fp, 1024);
}
?>
Stream_get_Filters function နဲ့အတူ Php developer တွေဟာ stream filter တွေကိုအထူးသဖြင့်စိတ်ကြိုက်ခင်း protocol တွေရဲ့အမှု၌ Support ကိုလွယ်ကူစွာစစ်ဆေးနိုင်သည်။ သင်၏ protocol သည် filter များကိုထောက်ပံ့သည်ဆိုပါက filter များကိုမှတ်ပုံတင်ရန် stream_filter_register_filter_append ကို သုံးနိုင်သည်။ ဤနည်းအားဖြင့် streaming streaming လုပ်နေစဉ်အတွင်းအချက်အလက်များကိုသင်ထိရောက်စွာလုပ်ဆောင်နိုင်သည်။