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

stream_get_meta_data က project ရဲ့ protocol အမျိုးအစားကိုခွဲခြားသတ်မှတ်နိုင်သလား။ အသုံးပြုမှုနည်းလမ်း၏ခွဲခြမ်းစိတ်ဖြာ

gitbox 2025-07-17

PHP တွင် stream_get_meta_data () သည်အလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါ developer များစွာသည်စပ်စုကြသည်။

ဤဆောင်းပါးသည်ဤပြ problem နာကိုဆန်းစစ်ကြည့်ရှုရန်နှင့် stream_get_meta_data ၏အမှန်တကယ်လုပ်ဆောင်မှုများနှင့်ကန့်သတ်ချက်များကိုသရုပ်ဖော်ရန်ဥပမာများကိုအသုံးပြုပါမည်။

stream_get_meta_data () protocol အမျိုးအစားများကိုဖေါ်ထုတ်နိုင်ပါသလား။

တိုတောင်းသောအဖြေမှာ - protocol type ကိုတိုက်ရိုက်ဖော်ထုတ်။ မရပါ

stream_get_meta_data ()) ဖိုင်အဆုံး ( EFF ) ကိုပိတ်ထားသည်ဖြစ်စေ, ကူးယူ နိုင်သော /, protocol type ၏သတင်းအချက်အလက်များကိုစီးဆင်းသောအခါစီးဆင်းနေသောအရင်းအမြစ်တွင်အမှန်တကယ်သွယ်ဝိုက်သော်လည်း function မှတဆင့်ထိတွေ့မှုမရှိပါ။

ဥပမာအားဖြင့်:

 <span><span><span class="hljs-variable">$fp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">"http://example.com"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);
</span><span><span class="hljs-variable">$meta</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_get_meta_data</span></span><span>(</span><span><span class="hljs-variable">$fp</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$meta</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$fp</span></span><span>);
</span></span>

$ Meta Data ဖွဲ့စည်းပုံသည်အကြမ်းအားဖြင့်အောက်ပါအတိုင်းဖြစ်သည် -

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [wrapper_type] =&gt; http
    [stream_type] =&gt; tcp_socket
    [mode] =&gt; r
    [unread_bytes] =&gt; </span><span><span class="hljs-number">0</span></span><span>
    [seekable] =&gt; 
    [uri] =&gt; </span><span><span class="hljs-attr">http</span></span><span>://example.com
    [timed_out] =&gt; 
    [blocked] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [eof] =&gt; 
)
</span></span>

၎င်းတို့အနက် HTTP , FTP , Php စသည့်စသည့် "protocol type" နှင့်အနီးစပ်ဆုံး နေရာမှာ HTTP, FTP, Php စသည့်နယ်ပယ်တွင်အနီးဆုံးနေရာတွင်ရှိသည်

Wrapper_type နှင့် stream_type ၏အဓိပ္ပါယ်

  • Wrapper_type : ဤကွက်လပ်သည် PHP မှအသုံးပြုသော "Wrapper" ၏ wrapper အမျိုးအစားကိုကိုယ်စားပြုသည်။ အသုံးများသောတန်ဖိုးများတွင် HTTP , FTP , PHP, PLP , PLPFile စသည်တို့ပါဝင်သည်။

  • Steam_type - TCP_SOCTECT , SSL , SSL, stdio စသည့်အဆင့်နိမ့်ကိုယ်စားပြုချက်များစသည်တို့သည်အမှန်တကယ်ဂီယာနည်းလမ်းကိုထင်ဟပ်စေသည်။

သတင်းအချက်အလက်များကို "protocol" အဆင့်တွင်သတင်းအချက်အလက်များကိုဖော်ထုတ်လိုပါက Wrapper_type လယ်ကွင်းကိုပထမဆုံးကြည့်ရှုရန်အကြံပြုသည်။

Protocol ကို Wrapper_type မှတစ်ဆင့်မည်သို့ဆုံးဖြတ်ရမည်နည်း။

protocol သတင်းအချက်အလက်များကိုထုတ်ယူခြင်းနှင့်ပြန်လည်ထုတ်ယူသောအထောက်အကူပြုလုပ်ဆောင်မှုကိုသင် encapsult ။ ဥပမာအားဖြင့်:

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">getStreamProtocol</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$stream</span></span></span><span>) {
    </span><span><span class="hljs-variable">$meta</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_get_meta_data</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$meta</span></span><span>[</span><span><span class="hljs-string">'wrapper_type'</span></span><span>] ?? </span><span><span class="hljs-literal">null</span></span><span>;
}
</span></span>

အသုံးပြုမှုဥပမာ -

 <span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'php://input'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">getStreamProtocol</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း: php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$stream</span></span><span>);
</span></span>

ဤနည်းအားဖြင့်သင်သည်စီးဆင်းမှု protocol ၏အရင်းအမြစ်ကိုအခြေခံအားဖြင့်ဆုံးဖြတ်နိုင်သည်။

အကျဉ်းချုပ်

stream_get_meta_data () သည် protocol name ကိုအတိအလင်းမပြန်ပါ။ rapper_type fields သည် developer များအား protocol သို့မဟုတ် wrapper type ကိုအသုံးပြုသည်ကိုဆုံးဖြတ်ရန်ပြန်လည်ရောက်ရှိသည်။ ဤသွယ်ဝိုက်မှတ်ပုံတင်နည်းသည်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အလွန်လက်တွေ့ကျလာသည်။

သိကောင်းစရာများ - stream အရင်းအမြစ်မျိုးစုံနှင့်ဆက်ဆံရာတွင်အထူးသဖြင့်ကွန်ယက်သို့မဟုတ်ဝေးလံခေါင်ဖျားသောစမ်းချောင်းများနှင့်ပတ်သက်လာလျှင်ချမှတ်ထားခြင်းနှင့်ခြွင်းချက်ကိုင်တွယ်ခြင်းကိုဂရုပြုရန်သေချာပါစေ။