PHP တွင် stream_get_meta_data () function ကိုများသောအားဖြင့် function ကို function ကိုအသုံးပြုလေ့ရှိပြီး၎င်းသည်စီးဆင်းမှု, offset အခြေအနေနှင့်ဖိုင်ညွှန်ပြခြင်း၏တည်နေရာအပါအ 0 င်ဖိုင်စီးဆင်းမှုနှင့်ပတ်သက်သောအသေးစိတ်အချက်အလက်များကိုပေးနိုင်သည်။ ဤလုပ်ဆောင်မှုကိုအသုံးပြုခြင်းဖြင့် developer များကလက်ရှိဖိုင်စီးဆင်းမှုကိုဖတ်ရှုနိုင်သည့်နေရာတွင်အလွယ်တကူစစ်ဆေးနိုင်သည်။ ဖိုင် pointer အနေအထားကိုနားလည်ခြင်းသည်ဖိုင်များ၏စာဖတ်ခြင်းနှင့်ရေးသားခြင်းကိုပိုမိုထိရောက်စွာထိန်းချုပ်ရန်အထောက်အကူပြုသည်။
အဆိုပါ stream_get_meta_data () function ကို function ကို function ကိုတစ် metadata ကိုပြန်ပို့နိုင်ပါတယ်။ ဤအချက်အလက်တွင်ဖိုင်စီး, အဖွင့် mode, လက်ရှိစာဖတ်ခြင်းတည်နေရာ, ၎င်း၏ 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 : ခိုင်လုံသောဖိုင်စီးအရင်းအမြစ်ဖြစ်ရမည်။
ဤကဲ့သို့သောဖိုင်စီး၏သက်ဆိုင်ရာ metadata ပါ 0 င်သည့်ခင်းကျင်းမှုကိုပြန်လည်ရောက်ရှိစေသည်။
Timed_out : စီးဆင်းမှုစစ်ဆင်ရေးကိုအချိန်ကုန်သက်သာလျှင် Reward Reward ။
ပိတ်ဆို့ခြင်း - စီးဆင်းမှုကိုပိတ်ဆို့ထားလျှင် စစ်မှန်တဲ့ ပြန်လာပါ။
EFT : စမ်းချောင်းသည်ဖိုင်၏အဆုံးသို့ရောက်နေလျှင် REARD REAVE သို့ပြန်လည်ရောက်ရှိသည်။
unread_bytes : လက်ရှိစီးဆင်းမှုကိုမဖတ်ပါ။
Seekable - ဖိုင်အတွင်းရှိသီးခြားနေရာတစ်ခုသို့ခုန်ချနိုင်သည်။
URI : ဖိုင်၏အမူ။
Mode : Open file stream (ဥပမာ, R , w , စသည်တို့) ။
Stream_type : များသောအားဖြင့် စီးဆင်း လေ့ရှိတယ်။
Wrapper_Data - ထုပ်ပိုး၏ဒေတာ (ရှိလျှင်) ။
Wrapper_type : စီးဆင်းမှုအမျိုးအစား (ရှိလျှင်) ။
ဖိုင်စီး၏တည်နေရာကိုဖတ်ရှုသည့် metadata တွင်မ undadata တွင် မ undead_bytes သို့မဟုတ် ရှာဖွေနိုင်သော သတင်းအချက်အလက်များကိုစစ်ဆေးခြင်းအားဖြင့်သင်ယူနိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဖိုင်စီးကိုဖွင့်ပါ</span></span><span>
</span><span><span class="hljs-variable">$file</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">$file</span></span><span>);
</span><span><span class="hljs-comment">// ဖိုင် pointer တည်နေရာကိုရယူပါ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်စီးကိုလက်ရှိဖတ်နိုင်ပါသလား။: "</span></span><span> . (</span><span><span class="hljs-variable">$metaData</span></span><span>[</span><span><span class="hljs-string">'seekable'</span></span><span>] ? </span><span><span class="hljs-string">'ဟုတ်ကဲ့'</span></span><span> : </span><span><span class="hljs-string">'မဟုတ်'</span></span><span>) . PHP_EOL;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်စီးအားဖြင့်မဖတ်ပါ bytes အရေအတွက်: "</span></span><span> . </span><span><span class="hljs-variable">$metaData</span></span><span>[</span><span><span class="hljs-string">'unread_bytes'</span></span><span>] . PHP_EOL;
</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">$file</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>stream_get_meta_data () မှတဆင့်အချို့သော stream status ကိုသတင်းအချက်အလက်ရယူခြင်းအပြင် PHP ၏ built-in function ftell မှတစ်ဆင့်လက်ရှိဖိုင်ညွှန်ပြသည့်နေရာကိုလည်းရယူနိုင်သည်။ FTell () function သည် bytes တွင်လက်ရှိဖတ်သည့်အနေအထား၏ offset ကိုပြန်ပို့သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဖိုင်ကိုဖွင့်ပါ</span></span><span>
</span><span><span class="hljs-variable">$file</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">// အကြောင်းအရာအချို့ကိုဖတ်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span><span><span class="hljs-comment">// လက်ရှိဖိုင် pointer တည်နေရာကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftell</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"လက်ရှိဖိုင် pointer တည်နေရာ: "</span></span><span> . </span><span><span class="hljs-variable">$position</span></span><span> . </span><span><span class="hljs-string">" ဒရယ်"</span></span><span> . PHP_EOL;
</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">$file</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>ဖိုင်ကြီးများနှင့်အလုပ်လုပ်သောအခါဖိုင်ဖတ်ရှုခြင်း၏တိုးတက်မှုကိုအချိန်မှန်အတွက်ခြေရာခံရန်လိုအပ်သည်။ ဥပမာအားဖြင့်ဖိုင်ကြီးတစ်ခုတင်သွင်းသည့်အခါကျွန်ုပ်တို့သည်ဖိုင်ညွှန်ပြသည့်နေရာကိုရယူရန်နှင့်တိုးတက်မှုဘားကို dynamically ပြရန် Stream_Get_Meta_Data () ကို သုံးနိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဖိုင်ကြီးတစ်ခုဖွင့်ပါ</span></span><span>
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'largefile.txt'</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);
</span><span><span class="hljs-comment">// 获取文件的总ဒရယ်数</span></span><span>
</span><span><span class="hljs-variable">$fileSize</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filesize</span></span><span>(</span><span><span class="hljs-string">'largefile.txt'</span></span><span>);
</span><span><span class="hljs-comment">// 初始化读取的ဒရယ်数</span></span><span>
</span><span><span class="hljs-variable">$readBytes</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-comment">// လိုင်းအားဖြင့်ဖိုင်လိုင်းကိုဖတ်ပါ</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
</span><span><span class="hljs-comment">// 更新已读取的ဒရယ်数</span></span><span>
</span><span><span class="hljs-variable">$readBytes</span></span><span> += </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$line</span></span><span>);
</span><span><span class="hljs-comment">// တိုးတက်မှုကိုတွက်ချက်ပါ</span></span><span>
</span><span><span class="hljs-variable">$progress</span></span><span> = (</span><span><span class="hljs-variable">$readBytes</span></span><span> / </span><span><span class="hljs-variable">$fileSize</span></span><span>) * </span><span><span class="hljs-number">100</span></span><span>;
</span><span><span class="hljs-comment">// တိုးတက်မှုပြပါ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"တိုးတက်မှုကိုဖတ်ပါ: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-variable">$progress</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>) . </span><span><span class="hljs-string">"%\r"</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">$file</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>တစ်ခါတစ်ရံတွင်၎င်းကိုဖတ်သည့်အခါဖိုင်သည်အဆုံးသို့ရောက်ရှိခြင်းရှိမရှိဆုံးဖြတ်ရန်လိုအပ်သည်။ spream_get_meta_data_data () ကိုအသုံးပြုသော eof အချက်အလက်များကို အသုံးပြု. ဖိုင်ကိုအပြည့်အဝဖတ်ရှုခြင်းရှိမရှိကိုအလွယ်တကူဆုံးဖြတ်ရန်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဖိုင်စီးကိုဖွင့်ပါ</span></span><span>
</span><span><span class="hljs-variable">$file</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">// လိုင်းအားဖြင့်ဖိုင်လိုင်းကိုဖတ်ပါ直到文件末尾</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">feof</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$line</span></span><span>;
}
</span><span><span class="hljs-comment">// File Stream 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">$file</span></span><span>);
</span><span><span class="hljs-comment">// 判断ဟုတ်ကဲ့မဟုတ်已到达文件末尾</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$metaData</span></span><span>[</span><span><span class="hljs-string">'eof'</span></span><span>]) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖိုင်ကိုအဆုံးသို့ဖတ်ပြီးဖြစ်သည်"</span></span><span> . PHP_EOL;
}
</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">$file</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>stream_get_meta_data () သည်အထူးသဖြင့်ဖိုင်စီးများကိုကိုင်တွယ်သောအခါအလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းမှတဆင့် developer များကဖိုင်စီး၏ status ကိုစစ်ဆေးရုံသာမက File Pointer ၏တည်နေရာကိုဆက်လက်စောင့်ကြည့်နိုင်သည်။ အခြားဖိုင်များလည်ပတ်မှုလုပ်ငန်းဆောင်တာများ (ဥပမာ Ftell () နှင့် FCELK) ) နှင့်ပေါင်းစပ်ခြင်း (ဥပမာ - FCELL) နှင့်) (ဥပမာ)) ဖိုင်များကိုပိုမိုထိရောက်စွာ အသုံးပြု. ဖိုင်ကြီးများကိုပိုမိုထိရောက်စွာထိန်းချုပ်နိုင်သည်။