PHP တွင် stream_get_filts နှင့် stream_filter_append နှစ်ခုသည်များသောအားဖြင့်အသုံးပြုသော stream filter 2 ခုဖြစ်သည်။ သို့သော်ဤလုပ်ဆောင်မှုများကိုအသုံးပြုသည့်အခါအချို့သောအသုံးများသောအမှားများကိုမကြာခဏတွေ့ရသည်။ ဤဆောင်းပါးသည်ဤအမှားများကိုလေ့လာပြီးပြင်ဆင်မှုများပေးလိမ့်မည်။
အသုံးအများဆုံးအမှားတစ်ခုမှာတစ်ခုမှာမှတ်ပုံတင်ထားခြင်းမရှိသော filter ကို stream_filter_append တွင်အသုံးပြုရန်ကြိုးစားခြင်းဖြစ်သည်။ PHP တွင် filter အားလုံးကိုပုံမှန်အားဖြင့်မှတ်ပုံတင်ထားခြင်းမရှိသော်လည်းအချို့သောစစ်ထုတ်ကိရိယာများသည်နောက်ထပ်တိုးချဲ့မှုလိုအပ်သည်။ ဥပမာအားဖြင့်, သင်၏ system သည် zlib extension များကို enable မလုပ်ပါက ZLIB သို့ခေါ်ဆိုပါက * ဆက်စပ်သောစစ်ထုတ်ခြင်းများကျလိမ့်မည်။
fix နည်းလမ်း:
အသုံးပြုမည့် filter ကိုမှတ်ပုံတင်ထားကြောင်းသေချာပါစေ။ လက်ရှိမှတ်ပုံတင်ထားသောစစ်ထုတ်စက်များကိုကြည့်ရှုရန် stream_get_filters function ကိုသင်အသုံးပြုနိုင်သည်။
အကယ်. filter သည်မတည်ရှိပါက PPP extensions များလိုအပ်ပါက (ဥပမာ zlib , filter စသည်တို့) ရှိမရှိစစ်ဆေးပါ။
စိတ်ကြိုက် filter တစ်ခုကိုမှတ်ပုံတင်ရန် steam_filter_register () ကို သုံးပါ။
if (in_array('zlib.deflate', stream_get_filters())) {
// Filters ကိုလုံခြုံစွာအသုံးပြုပါ
stream_filter_append($stream, 'zlib.deflate');
} else {
echo 'filter ကိုရှာမတွေ့ပါ';
}
Stream_filter_append function ၏ဒုတိယ pareter သည် filter's configuration parameter သည်။ Parameter သည်မမှန်ကန်ပါကအမှားတစ်ခုဖြစ်စေနိုင်သည်သို့မဟုတ် filter ၏မျှော်မှန်းထားသောပုံစံနှင့်မကိုက်ညီပါ။ ဥပမာအားဖြင့်, filter တစ်ခုသည်တိကျသောပုံစံတစ်ခု၏ string တစ်ခုမျှော်လင့်ထားလျှင်,
fix နည်းလမ်း:
Passed parameter type type သည် filter မှလိုအပ်သောအမျိုးအစားများကိုကိုက်ညီစေရန်သက်ဆိုင်ရာစာရွက်စာတမ်းများကိုစစ်ဆေးပါ။
သူတို့ကိုမဖြတ်ခင် configuration parameters တွေကိုအမျိုးအစားနှင့်တရားဝင်မှုကိုစစ်ဆေးပါ။
$stream = fopen('http://gitbox.net/somefile.txt', 'r');
if ($stream) {
stream_filter_append($stream, 'string.toupper', STREAM_FILTER_READ);
// ဤနေရာတွင်ယူဆပါ
// သို့သော်အခြားစစ်ထုတ်စက်များ၏ parameters တွေကိုသေချာအောင်သေချာအောင်လုပ်ပါ
}
filter ကိုလက်တွေ့ကျင့်သုံးပြီးနောက်စီးဆင်းမှုကိုမှန်ကန်စွာမပိတ်ပါက၎င်းသည်အရင်းအမြစ်အချို့ကိုယိုစိမ့်မှုသို့မဟုတ်မမှန်ကန်သောအပြုအမူကိုဖြစ်ပေါ်စေနိုင်သည်။ အထူးသဖြင့်သင်စီးဆင်းမှုကိုပြီးစီးပြီးနောက် File Stream ကိုအတိအလင်းမပိတ်ပါနှင့်, unprocessed အမှားများသည်စနစ်၏တည်ငြိမ်မှုကိုအကျိုးသက်ရောက်နိုင်သည်။
fix နည်းလမ်း:
FCLOEESE () ကို သင် clock ၏လုပ်ဆောင်မှုအားလုံးကိုပြုလုပ်ပြီးသည့်နောက်, FCLOESE () ကို အသုံးပြု. ဖိုင်စီးကိုအမြဲတမ်းပိတ်ပါ။
Stream_filter_remove () မှတ်ဉာဏ်ယိုစိမ့်မှုများကိုရှောင်ရှားရန်မလိုအပ်တော့မည့်စစ်ထုတ်ကိရိယာများကိုဖယ်ရှားရန်။
$stream = fopen('http://gitbox.net/somefile.txt', 'r');
$filter = stream_filter_append($stream, 'string.toupper');
while ($data = fgets($stream)) {
echo $data;
}
// စစ်ထုတ်ကိရိယာများနှင့်စီးဆင်းမှုကိုပိတ်ပါ
stream_filter_remove($filter);
fclose($stream);
တခါတရံတွင်သင် stream_filter_append ကို မထောက်ပံ့သော stream အမျိုးအစားတွင်အသုံးပြုရန်ကြိုးစားပေမည်။ ဥပမာအားဖြင့်, သင်သည်မဖတ်နိုင်သည့်စမ်းရေကိုဖတ်။ မရပါ (ဥပမာ - ရေးသောသာစီးဆင်းမှု) ။
fix နည်းလမ်း:
filter ကိုအသုံးမပြုမီစီးဆင်းမှုအမျိုးအစားသည်သင့်လျော်ကြောင်းသေချာပါစေ။ စီးဆင်းမှု၏ metadata ကို stream_get_meta_data မှတဆင့် check လုပ်ထားနိုင်ပါသည်။
$stream = fopen('http://gitbox.net/somefile.txt', 'r');
$meta = stream_get_meta_data($stream);
if ($meta['mode'] === 'r') {
stream_filter_append($stream, 'string.toupper', STREAM_FILTER_READ);
}
steam_filter_append သည် filter ကိုအရင်းအမြစ်များကိုပြန်ပို့သည်။ function ခေါ်ဆိုမှုမအောင်မြင်ပါကခြွင်းချက်တစ်ခု ချ ပစ်မည်မဟုတ်ပါ, ၎င်းသည် developer များကိုအမှားအယွင်းများကိုလျစ်လျူရှုစေနိုင်သည်, ခက်ခဲသော debugging ဖြစ်ပေါ်စေသည်။
fix နည်းလမ်း:
အမြဲတမ်း stream_filter_append မှ ရရှိသောရလဒ်ကိုစစ်ဆေးပါ။
အမှားတစ်ခုဖြစ်ပေါ်သောအခါပြ problems နာများကိုဖြေရှင်းရန်အတွက်အသေးစိတ်အချက်အလက်များကိုထုတ်ဖော်ပြောဆိုပါ။
$filter = stream_filter_append($stream, 'string.toupper', STREAM_FILTER_READ);
if ($filter === false) {
echo 'Filter ပူးတွဲဖိုင်မအောင်မြင်ပါ';
}
ဤဆောင်းပါးမှတစ်ဆင့် stream_get_filters နှင့် stream_filts_apiltend သုံး. သင်ကြုံတွေ့ရသောအမှားအယွင်းများကိုသင်ရှောင်ရှားနိုင်သည်။ အသုံးပြုရန်မှန်ကန်သောနည်းလမ်းမှာ code ၏တည်ငြိမ်မှုကိုတိုးတက်စေရုံသာမကဤစီးဆင်းမှု filter function များကိုမလျော်ကန်သောအသုံးပြုမှုကြောင့်အရင်းအမြစ်စွန့်ပစ်ပစ္စည်းနှင့်အမှားများကိုရှောင်ရှားနိုင်သည်။ ဤအကြံပြုချက်များသည် PHP ၏စစ်ထုတ်ခြင်းစွမ်းရည်ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်ကူညီပေးပါ။