လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> stream_get_meta_data ကိုဘယ်လိုမှန်ကန်စွာသုံးနိုင်မလဲ။

stream_get_meta_data ကိုဘယ်လိုမှန်ကန်စွာသုံးနိုင်မလဲ။

gitbox 2025-09-17

stream_get_meta_data ကိုအသုံးပြုပြီး file stream တစ်ခုရဲ့ metadata ဘယ်လိုရနိုင်မလဲ။

PHP တွင် stream_get_meta_data သည် stream အရင်းအမြစ်များနှင့်ပတ်သက်သော metadata အချက်အလက်ကိုရယူနိုင်သည့်အလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤရွေ့ကား metadata တွင် status, အမျိုးအစားနှင့်စီးကြောင်းနှင့်ပတ်သက်။ အရေးကြီးသောသတင်းအချက်အလက်များပါရှိသည်။ ဤလုပ်ဆောင်မှုကိုမည်သို့အသုံးပြုရမည်ကိုနားလည်ခြင်းသည် developer များအတွက်မှန်ကန်စွာမရှိမဖြစ်လိုအပ်သည်။ အထူးသဖြင့်ကွန်ရက်စီးများကဲ့သို့သောအခြားစီးဆင်းမှုများကိုကိုင်တွယ်ရန်လိုအပ်သည်။

File Stream Metadata ဆိုတာဘာလဲ။

File Stream Metadata သည်စီးဆင်းမှုနှင့်ပတ်သက်သောနောက်ထပ်သတင်းအချက်အလက်များကိုရည်ညွှန်းသည်။ စီးဆင်းနေသောစီးဆင်းမှုသည်များသောအားဖြင့်ဖွင့်လှစ်ထားသည်ဖြစ်စေ, ဖိုင်အမျိုးအစား, encoding method status, ဖွင့်လှစ်ထားသည်ဖြစ်စေ, ပွင့်လင်း mode စသည်ဖြစ်စေ, ပွင့် လင်း mode စသည်ဖြစ်စေ, ၎င်းသည်ဖိုင်အမျိုးအစားကိုတိုက်ရိုက်ပြန်မပေးပါ,

stream_get_meta_data ၏အခြေခံအသုံးပြုမှု

stream_get_meta_data function ၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 <span><span><span class="hljs-title function_ invoke__">stream_get_meta_data</span></span><span>(resource </span><span><span class="hljs-variable">$stream</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $ stream parameter သည်မှန်ကန်သော file stream အရင်းအမြစ် ( fopen () , stream_socient _cletient () စသည်) စသဖြင့်ဖန်တီးထားသော stream stream stream stream stream) ဖြစ်သည်။

ဒီ function ကစီးဆင်းမှု metadata ပါတဲ့ခင်းကျင်းမှုကိုပြန်ပို့သည်။ ဘုံ metadata keys များတွင်:

  • Timed_out : စမ်းချောင်းကစမ်းကြည့်နေသလား။

  • ပိတ်ဆို့ခြင်း - Boolean Value သည်စီးဆင်းမှုသည်ပိတ်ဆို့ထားသောပြည်နယ်တွင်ရှိ, ရှိမရှိညွှန်ပြသည်။

  • EFT : စမ်းချောင်းသည်ဖိုင်၏အဆုံးသို့ရောက်နေပြီဆိုတာကို boolean value ။

  • stream_type : stream အမျိုးအစား ( TCP , UDP , ဖိုင် စသည်တို့) stream အမျိုးအစားကိုကိုယ်စားပြုသည်။

  • Wrapper_type : string ကို stream ၏ encapsulation အမျိုးအစားကိုကိုယ်စားပြု။

  • Wrapper_Data : strings, encapsulated data နှင့်ပတ်သက်သည့်အပိုဆောင်းအချက်အလက်များပါ 0 င်သည့်အပို (HTTP တုံ့ပြန်မှုခေါင်းစီးစသည်) ။

  • mode : string တစ်ခု (ဥပမာ R , W , A စသည်) ဖိုင်ဖွင့်စနစ်ကိုညွှန်ပြသည့် string တစ်ခု။

ဥပမာ - ဖိုင်စီး၏ metadata ကိုရယူပါ

STREAM_GET_META_DATA ကို ဘယ်လိုသုံးရမယ်ဆိုတာကိုနားလည်ဖို့လက်တွေ့ကျပုံသက်သေကိုသုံးကြည့်ရအောင်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဖိုင်စီးကိုဖွင့်ပါ</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">"example.txt"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);

</span><span><span class="hljs-comment">// ဖိုင်စီး၏ metadata ရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$metadata</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-comment">// output metadata</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$metadata</span></span><span>);

</span><span><span class="hljs-comment">// ဖိုင်စီးကိုပိတ်ပါ</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><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

အထက်ပါဥပမာတွင် file seight.txt ကိုဖွင့်ရန် FOPEN () ကို ပထမ ဦး စွာအသုံးပြုပါ။ ထို့နောက် The stream_get_meta_Data () ကို သုံးပါ။ $ Metadata Array သည်အောက်ပါအကြောင်းအရာများပါ 0 င်နိုင်သည်။

 <span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [timed_out] =&gt; 
    [blocked] =&gt; 
    [eof] =&gt; 
    [stream_type] =&gt; file
    [wrapper_type] =&gt; 
    [wrapper_data] =&gt; 
    [mode] =&gt; r
    [seekable] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [uri] =&gt; example.txt
)
</span></span>

ဘုံ metadata ကွင်းဆင်းခွဲခြမ်းစိတ်ဖြာ

  • Timed_out : ကွန်ယက်စီးဆင်းမှုတစ်ခုဖြစ်ပါက အချိန်ကုန်ခြင်းသည် အချိန်ကုန်ခြင်းကြောင့်စီးဆင်းမှုကိုအနှောင့်အယှက်မဖြစ်စေ, File Streams အတွက်ဒီလယ်ကွက်သည်များသောအားဖြင့်ဗလာဖြစ်သည်။

  • ပိတ်ဆို့ထားခြင်း - stream သည်များသောအားဖြင့်ကွန်ယက်စီးဆင်းမှုများအတွက်အသုံးပြုသောပိတ်ဆို့ခြင်း mode တွင်ရှိ, File Streams သည်ယေဘုယျအားဖြင့်ဤအရာကိုမထိခိုက်ပါ။

  • EFT : ဖိုင်၏အဆုံးကိုဖတ်သည့်အခါဤလယ်ကွင်းသည် စစ်မှန်သော ကြောင့်ဖြစ်သည်

  • Steam_type : စမ်းချောင်းအမျိုးအစားကိုဖော်ပြသည်။ သာဓကအားဖြင့်သာမန်ဖိုင်ချောင်းများအတွက် ဖိုင်ကို ဤနေရာတွင်ပြန်ပို့သည်။ ၎င်းသည်ကွန်ယက်ချိတ်ဆက်မှုတစ်ခုဖြစ်ပါက TCP သို့မဟုတ် UDP ကို ပြန်ပို့နိုင်သည်။

  • Mode : Read- orm ကိုကိုယ်စားပြုသောအ နေ ဖြင့် Read-or သာဖြစ်သည်,

Stream_get_Meta_DATA ကို သုံးပါ

ဖိုင်များကိုထုတ်လွှင့်ခြင်းအပြင် stream_get_meta_data ကိုလည်း ကွန်ယက်စီးဆင်းမှု၏ metadata ကိုရရှိရန်လည်းအသုံးပြုနိုင်သည်။ HTTP တောင်းဆိုမှုစီးဆင်းမှုကိုဥပမာတစ်ခုအဖြစ်ယူပြီး, ကုဒ်ပုံဥပမာမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// a TCP ဆက်</span></span><span>
</span><span><span class="hljs-variable">$stream</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://www.example.com:80"</span></span><span>, </span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>);

</span><span><span class="hljs-comment">// 获取ဆက်流的元数据</span></span><span>
</span><span><span class="hljs-variable">$metadata</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-comment">// output metadata</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$metadata</span></span><span>);

</span><span><span class="hljs-comment">// စီးကိုပိတ်ပါ</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><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

ဤဥပမာတွင် TCP ဆက်သွယ်မှုတစ်ခုကိုဖန်တီးရန် Stream_socket_clies ကို သုံး. ဆက်သွယ်မှု၏ metadata ကိုရယူပါ။ ပြန်လာသော metadata တွင်ကွန်ယက်စီးဆင်းမှုနှင့်ပတ်သက်သောအချက်အလက်များနှင့်ပါ 0 င်နိုင်သည်။

မှတ်သားရန်အရာ

  • File Stream VS Network Stream : File Streams နှင့် Network Streams အတွက် Metadata ကို stream_get_meta_data မှပြန်လာသော Metadata သည်ကွဲပြားလိမ့်မည်။ ကွန်ယက်စီးဆင်းမှုအတွက် Metadata သည်ကွန်ယက်ပြည်နယ်ကိုပိုမိုအာရုံစိုက်သည်။ ဖိုင်စီးဆင်းမှုအတွက်ဖိုင်များ၏ဖွင့်လှစ်ခြင်းနှင့်ဖိုင်၏အဆုံးတွင်ဖော်ထုတ်ခြင်းကိုအဓိကထားသည်။

  • ဖိုင်များစီးဆင်းမှုအချက်အလက်များကိုရယူပါ ။ ဖိုင်များသည်ဖိုင်များကိုပြုပြင်သည့်အခါ EFF (ဖိုင်) ကွက်ကိုအထူးအသုံးဝင်သည်, ၎င်းသည်ဖိုင်များကိုဖတ်သည့်အခါဖိုင်နယ်ပယ်ထက် ကျော်လွန်. အကြောင်းအရာကိုဖတ်ရှုခြင်းကိုရှောင်ကြဉ်သည်။

  • စွမ်းဆောင်ရည် - stream_get_meta_data သည် အလွန်အသုံးဝင်သောသတင်းအချက်အလက်များကိုထောက်ပံ့နေစဉ်မကြာခဏခေါ်ဆိုမှုများသည်အထူးသဖြင့်ကြီးမားသောဖိုင်များသို့မဟုတ်မြင့်မားသောဖိုင်များသို့မဟုတ်မြင့်မားသော frequency network တောင်းဆိုမှုများအတွက်ပိုမိုများပြားသောစွမ်းဆောင်ရည်ကိုယူဆောင်လာနိုင်သည်။ ပုံမှန်ကိစ္စများတွင်လိုအပ်လျှင်သာခေါ်ဆိုရန်အကြံပြုသည်။

အကျဉ်းချုပ်

stream_get_meta_data သည်စီးဆင်းမှုများပြုလုပ်သောအခါအလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်းသည်သင်၏ metadata ကိုမြန်မြန်ဆန်ဆန်ရနိုင်ပြီးစီးဆင်းမှုအခြေအနေကိုနားလည်ရန်ကူညီနိုင်သည်။ ဤလုပ်ဆောင်မှုကိုသင့်လျော်စွာအသုံးပြုခြင်းအားဖြင့် developer များသည် stream လုပ်ငန်းများကိုပိုမိုထိရောက်စွာ debug လုပ်နိုင်သည်, စာဖတ်ခြင်းသို့မဟုတ်စာရေးရန်အစီအစဉ်၏တည်ငြိမ်မှုနှင့်မှန်ကန်မှုကိုသေချာစေနိုင်သည်။ ၎င်းသည်ဖိုင်စီး, ကွန်ယက်စီးသို့မဟုတ်အခြားချောင်းအမျိုးအစားများဖြစ်စေသည်ဖြစ်စေ,