လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Stream_get_Filters စီးဆင်းမှုနှင့်ပတ်သက်သောအသေးစိတ်အချက်အလက်များရရှိရန်အတွက် stream_get_meta_data နှင့် တွဲဖက်. အသုံးပြုသည်

Stream_get_Filters စီးဆင်းမှုနှင့်ပတ်သက်သောအသေးစိတ်အချက်အလက်များရရှိရန်အတွက် stream_get_meta_data နှင့် တွဲဖက်. အသုံးပြုသည်

gitbox 2025-05-27

PHP တွင် Stream သည်အချက်အလက်များ, ကွန်ယက်များနှင့်မှတ်ဥာဏ်ကဲ့သို့သောအချက်အလက်များနှင့်မှတ်ဥာဏ်ကဲ့သို့သောအချက်အလက်များနှင့်ပစ်မှတ်များကဲ့သို့သောအချက်အလက်ရင်းမြစ်များနှင့်ပစ်မှတ်များဖြစ်သောအချက်အလက်များနှင့်ရည်မှန်းချက်ပန်းတိုင်များပြုလုပ်ရန်အလွန်အစွမ်းထက်သောစိတ်တဇအယူအဆဖြစ်သည်။ ကျနော်တို့စီးဆင်းမှုကိုကိုင်တွယ်တဲ့အခါသူတို့ရဲ့စစ်ထုတ်စက်နှင့် metadata နားလည်ရန်အလွန်အရေးကြီးပါသည်။ ဤဆောင်းပါးသည် Stream_get_Filters () နှင့် stream_get_meta_data_data () ကို အသုံးပြုနည်း () stream_get_meta_data_data () ကိုပေါင်းစပ်။ မိတ်ဆက်ပေးလိမ့်မည်။

1 ?? Stream_get_Filters () ?

Stream_get_Filters () သည်လက်ရှိရရှိနိုင်သည့် stream filters အားလုံးကိုစာရင်းပြုစုသော PHP built-in function တစ်ခုဖြစ်သည်။ stream filter များကိုချုံ့ခြင်း, စာဝှက်ခြင်း, encoding နှင့်ပြောင်းလဲခြင်းကဲ့သို့သောအချက်အလက်များကိုပြုပြင်ရန်အသုံးပြုသည်။

 <?php
$filters = stream_get_filters();
print_r($filters);
?>

ဒီကုဒ်ကို run ပြီးဒီလိုမျိုး output ကိုတွေ့ရလိမ့်မယ်။

 Array
(
    [0] => string.rot13
    [1] => string.toupper
    [2] => zlib.inflate
    [3] => zlib.deflate
    ...
)

ဤအချက်ကလက်ရှိ PHP Configuration တွင်ထောက်ပံ့သောစစ်ထုတ်ကိရိယာများကိုပြောပြသည်။

2 ?? stream_get_meta_data () ?

Stream_Get_meta_Data () ကို ပွင့်လင်းတဲ့ meta အချက်အလက်တွေရဖို့အသုံးပြုတယ်။ အသေးစိတ်အချက်အလက်အမျိုးမျိုးပါ 0 င်သောအပေါင်းအသင်းဆိုင်ရာခင်းကျင်းမှုကိုပြန်လည်ရယူသည်။

  • စာဖတ်လို့မရဘူးလား,

  • ဖိုင်၏အဆုံး (EOF) ကိုရောက်ရှိသည်ဖြစ်စေ

  • Encapsulation Protocol (ဥပမာ HTTP , ဖိုင် )

  • ကပိတ်ဆို့ရှိမရှိ

  • အချိန်ကုန်ချိန်ညှိခြင်း

ဥပမာ -

 <?php
$fp = fopen('http://gitbox.net/', 'r');
$meta = stream_get_meta_data($fp);
print_r($meta);
fclose($fp);
?>

output ကိုဆင်တူသည် -

 Array
(
    [wrapper_type] => http
    [stream_type] => tcp_socket/ssl
    [mode] => r
    [unread_bytes] => 0
    [seekable] =>
    [timed_out] =>
    [blocked] => 1
    [eof] =>
)

3 ?? ပေါင်းစပ်ခြင်းအတွက်အသုံးပြုပါ။ စီးဆင်းမှုနှင့်ပတ်သက်သောအသေးစိတ်အချက်အလက်များကိုရယူပါ

ကျနော်တို့နှစ်ခုကိုပေါင်းစပ်နိုင်, ပထမ ဦး ဆုံးထောက်ခံ filter ကိုရယူပါ, ထို့နောက် stream ပွင့်လင်းပွင့်လင်းမြင်သာ, ၎င်း၏ meta-information ကိုကြည့်ရှုခြင်းနှင့် filter ကိုပူးတွဲရန်ကြိုးစားပါ။

နမူနာကုဒ်:

 <?php
// လက်ရှိရရှိနိုင် filter များစာရင်း
$filters = stream_get_filters();
echo "ရရှိနိုင် filter များစာရင်း:\n";
foreach ($filters as $filter) {
    echo "- $filter\n";
}

// တစ် ဦး ဖွင့်လှစ် HTTP စီးဆင်း
$url = 'http://gitbox.net/';
$fp = fopen($url, 'r');

if (!$fp) {
    die("ဖွင့်လို့မရဘူး $url\n");
}

// 查看စီးဆင်း的元数据
$meta = stream_get_meta_data($fp);
echo "\nစီးဆင်း的元信息:\n";
print_r($meta);

// filter တစ်ခုပူးတွဲပါကြိုးစားပါ(ထောက်ပံ့လျှင် zlib.inflate)
if (in_array('zlib.inflate', $filters)) {
    stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ);
    echo "ပူးတွဲပါ zlib.inflate 过滤器到စီးဆင်း。\n";
} else {
    echo "zlib.inflate filter ကိုမရရှိနိုင်ပါ。\n";
}

fclose($fp);
?>

4 ?? မှတ်စုများ

  • ချောင်းအားလုံးသည်စစ်ထုတ်စက်များအားလုံးကိုမထောက်ပံ့ပါ။ ဥပမာအားဖြင့် HTTP Streams သည် Zlib.inflate ကို မထောက်ပံ့နိုင်ပါ။

  • stream_filter_append ()) ကိုမသုံးမီ (), filter sends တည်ရှိမလားဆိုတာကိုစစ်ဆေးဖို့ suprem_get_filters () ကို သုံးဖို့အကောင်းဆုံးဖြစ်ပါတယ်။

  • stream_get_meta_data () သည် ဖုန်းခေါ်ဆိုခြင်းအတွက်လက်ရှိအခြေအနေကိုသာပြန်လည်ပေးပြီးစီးဆင်းမှုသည်ဖတ်ရန်သို့မဟုတ်ရေးရန်ပြောင်းလဲနိုင်သည်။