PHP တွင် Stream သည်အချက်အလက်များ, ကွန်ယက်များနှင့်မှတ်ဥာဏ်ကဲ့သို့သောအချက်အလက်များနှင့်မှတ်ဥာဏ်ကဲ့သို့သောအချက်အလက်များနှင့်ပစ်မှတ်များကဲ့သို့သောအချက်အလက်ရင်းမြစ်များနှင့်ပစ်မှတ်များဖြစ်သောအချက်အလက်များနှင့်ရည်မှန်းချက်ပန်းတိုင်များပြုလုပ်ရန်အလွန်အစွမ်းထက်သောစိတ်တဇအယူအဆဖြစ်သည်။ ကျနော်တို့စီးဆင်းမှုကိုကိုင်တွယ်တဲ့အခါသူတို့ရဲ့စစ်ထုတ်စက်နှင့် metadata နားလည်ရန်အလွန်အရေးကြီးပါသည်။ ဤဆောင်းပါးသည် Stream_get_Filters () နှင့် stream_get_meta_data_data () ကို အသုံးပြုနည်း () stream_get_meta_data_data () ကိုပေါင်းစပ်။ မိတ်ဆက်ပေးလိမ့်မည်။
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 တွင်ထောက်ပံ့သောစစ်ထုတ်ကိရိယာများကိုပြောပြသည်။
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] =>
)
ကျနော်တို့နှစ်ခုကိုပေါင်းစပ်နိုင်, ပထမ ဦး ဆုံးထောက်ခံ 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);
?>
ချောင်းအားလုံးသည်စစ်ထုတ်စက်များအားလုံးကိုမထောက်ပံ့ပါ။ ဥပမာအားဖြင့် HTTP Streams သည် Zlib.inflate ကို မထောက်ပံ့နိုင်ပါ။
stream_filter_append ()) ကိုမသုံးမီ (), filter sends တည်ရှိမလားဆိုတာကိုစစ်ဆေးဖို့ suprem_get_filters () ကို သုံးဖို့အကောင်းဆုံးဖြစ်ပါတယ်။
stream_get_meta_data () သည် ဖုန်းခေါ်ဆိုခြင်းအတွက်လက်ရှိအခြေအနေကိုသာပြန်လည်ပေးပြီးစီးဆင်းမှုသည်ဖတ်ရန်သို့မဟုတ်ရေးရန်ပြောင်းလဲနိုင်သည်။