PHP ၏ဖိုင်စစ်ဆင်ရေးလုပ်ဆောင်ချက်များအကြား FPASSTHRU () သည်ထင်ပေါ်ကျော်သောသို့သော်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်း၏အဓိကလုပ်ဆောင်ချက်မှာဖိုင်၏အဆုံးအထိ Open file pointer တစ်ခုကိုဖတ်ရန်နှင့်ဖတ်ရန်အကြောင်းအရာများကိုတိုက်ရိုက်ထုတ်လွှင့်ရန်ဖြစ်သည်။ PHP ၏ output buffer ယန္တရားနှင့်ပေါင်းစပ်ပြီး FPASSTHRU () ၏အပြုအမူကိုထိခိုက်စေနိုင်သည်။ ဤဆောင်းပါးသည် FPASSTHRU () ၏အခြေခံအသုံးပြုမှုကိုမိတ်ဆက်ပေးပြီး၎င်းနှင့် output buffer နှင့် output buffer တို့အကြားဆက်နွယ်မှုကိုစူးစမ်းလေ့လာပါမည်။
FPASSTHRU () ၏ function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">fpassthru</span></span><span> ( resource </span><span><span class="hljs-variable">$handle</span></span><span> )
</span></span>
၎င်းသည်မှန်ကန်သော file unto ားအမှိုက်သယံဇာတများကိုအမှတ်အသားပြုထားသည် (များသောအားဖြင့် fopen () ပြန်လာသည်) သည်လက်ရှိတည်နေရာမှအဆုံးအထိဖိုင်ကိုစတင်ဖတ်ရှုပြီးအကြောင်းအရာကို output buffer သို့မဟုတ် client သို့တိုက်ရိုက်ပို့သည်။ ၎င်းသည်များသောအားဖြင့်ဖိုင်များသို့မဟုတ် outputing logs များကို download လုပ်ခြင်းကဲ့သို့သောဖိုင်တွဲများကို browser သို့ပို့ရန်အသုံးပြုသည်။
ဥပမာ -
<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">"example.txt"</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$fp</span></span><span>) {
</span><span><span class="hljs-comment">// မလုပ်မနေရမဟုတ်သော:မှန်ကန်သောတ ဦး တည်းထားပါ header</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Content-Type: text/plain"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fpassthru</span></span><span>(</span><span><span class="hljs-variable">$fp</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>
PHP ၏ output buffer ယန္တရားသည် developer များအားသုံးစွဲသူများထံသို့ 0 န်ဆောင်မှုခံယူသူထံသို့ပို့သောအခါထိန်းချုပ်ထားသည်။ ကြားခံဖွင့်ထားသည့်အခါ PHP သည် Echo , Print သို့မဟုတ်အလားတူ output operty ကိုလုပ်ဆောင်သည့်အခါတိုင်း PHP သည် browser ထဲသို့ချက်ချင်းပို့ပေးသည်။ သို့သော် output buffer ကို ob_start နှင့်အတူ () တွင် outpart ကိုစတင်ပြီးနောက် ob_end_flush () , ob_flush () သို့မဟုတ် script or script နှင့် script just သို့မဟုတ် script or or script or script နှင့် ob_flush () သို့မဟုတ် script ကိုခေါ်ဆိုသည်အထိရလဒ်အားလုံးကိုကြားခံတွင်ယာယီသိမ်းဆည်းထားလိမ့်မည်။
output buffering ယန္တရား၏အရေးပါသောအခန်းကဏ် is သည် developer များကအကြောင်းအရာများကိုပြုပြင်ရန်, header အချက်အလက်များကိုထည့်သွင်းရန်, output မတိုင်မီ output ကိုထည့်သွင်းရန်,
FPASSTHRU () ကိုယ်တိုင်သည် output buffer ကိုကျော်လွှားနိုင်ခြင်းမရှိပါ။ ၎င်းသည် Buffer ကို client သို့တိုက်ရိုက်သွားမည့်အစားအချက်အလက်များကိုကြားခံထဲသို့ထည့်သွင်းထားဆဲဖြစ်သည်။ ဆိုလိုသည်မှာ output buffer ကိုဖွင့်ထားလျှင် FPASSTHRU () မှအကြောင်းအရာ output ကိုလည်းကြားခံရလိမ့်မည်။
ဆိုလိုသည်မှာ FPASSTHRU () ကိုအသုံးပြုသောအခါ, output buffering ကိုဖွင့်ထားသည့်အခါ (ဥပမာ, ob_start) ကိုအသုံးပြုပါက) ကိုသင့်လျော်သောအချိန်များတွင်အသုံးပြုသည်သို့မဟုတ်ရှင်းလင်းရန်သေချာစေခြင်းငှါ,
ဥပမာအားဖြင့်:
<span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</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">"largefile.zip"</span></span><span>, </span><span><span class="hljs-string">"rb"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$fp</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Content-Type: application/zip"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Content-Disposition: attachment; filename=\"download.zip\""</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fpassthru</span></span><span>(</span><span><span class="hljs-variable">$fp</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><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// ဒီအကြောင်းအရာကိုကွပ်မျက်ပြီးတဲ့နောက်မှာ client ကိုပို့လိုက်တယ်</span></span><span>
</span></span>
အကယ်. ob_end_flush () ကိုမခေါ်ပါကအကြောင်းအရာသည်စေ့စပ်ညှိနှိုင်းမှုတွင်အချိန်ကြာမြင့်စွာမှီဝဲနေနိုင်သည်။
FPASSTHRU () ကို ထိရောက်စွာနှင့်လုံခြုံစွာအသုံးပြုသောအခါအောက်ပါအချက်များကိုထည့်သွင်းစဉ်းစားသင့်သည် -
အကယ်. သင်သည်ယင်ကောင်ပေါ်တွင် (ထိုကဲ့သို့သောဖိုင်များဒေါင်းလုပ်လုပ်ခြင်းကဲ့သို့သော) ကို output လုပ်ရန်လိုအပ်ပါက output buffering သို့မဟုတ် manually ကိုပိတ်ရန်အကြံပြုသည်။
ပ conflicts ိပက်ခများကိုရှောင်ရှားရန် ob_end_clean () ကို အသုံးပြု. ကြားခံကိုရှင်းလင်းနိုင်ပါသည်။
<span><span><span class="hljs-comment">// ဖိုင်ဒေါင်းလုပ်များနှင့်အတူအပို output ကိုဝင်ရောက်စွက်ဖက်ခြင်းကိုရှောင်ကြဉ်ပါ</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ob_get_level</span></span><span>()) {
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
}
</span></span>
FPASSTHRU () () output files များမှသုံးသောအခါအကြောင်းအရာများကိုခေါ်ဆိုခြင်းမပြုမီ အကြောင်းအရာ နှင့် အကြောင်းအရာ - သဘောထား ကဲ့သို့သော header အချက်အလက်များကိုသတ်မှတ်ရန်သေချာပါစေ။ ဘာဖြစ်လို့လဲဆိုတော့အကြောင်းအရာ output ဖြစ်တာက header ကို setting ကွောကျရှံ့ပါလိမ့်မယ်။
FPASSTHRU () () မှ output ပါဝင်ခြင်းကိုမခေါ်မီအခြား HTML, နေရာများ, ဤအရာများသည် output ကိုစီးဆင်းမှုကိုညစ်ညမ်းစေပြီး file downloads ကဲ့သို့သောအခြေအနေများမှန်ကန်မှုကိုဖျက်ဆီးလိမ့်မည်။
FPASSTHRU () သည်ရိုးရှင်းသော output function တစ်ခုမျှသာဖြစ်သော်လည်းကြီးမားသောဖိုင်များကိုလွှဲပြောင်းခြင်းနှင့် output buffer ယန္တရားနှင့်အသုံးပြုခြင်းသည်၎င်း၏ output buffer ယန္တရားနှင့်အသုံးပြုခြင်းသည်၎င်းကိုတန်ဖိုးရှိသည့်ကိရိယာများဖြင့်အကျိုးရှိစေသည်။ output buffering ကိုအသုံးပြုခြင်းသည် output buffering ကိုအသုံးပြုခြင်းသည် developer များကိုပိုမိုထိန်းချုပ်နိုင်ပြီးစွမ်းဆောင်ရည်မြင့်မားသောစွမ်းဆောင်ရည်ဆိုင်ရာယုတ္တိဗေဒကိုတည်ဆောက်ရန်ကူညီနိုင်သည်။
အမှန်တကယ်လိုအပ်ချက်များကိုပေါင်းစပ်ခြင်းနှင့်ကြားခံယန္တရားဆိုင်ရာလုပ်ဆောင်မှုများနှင့် output functions ၏အသုံးပြုမှုအမိန့်ကိုပြင်ဆင်ခြင်းဖြင့် PHP developer များအနေဖြင့်လျှောက်လွှာ၏ရလဒ်အနေဖြင့်ရလဒ်များကိုပိုမိုပြောင်းလဲစေနိုင်သည်။