လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> FPASSTHRU function နှင့် PHP output buffer တို့အကြားဆက်နွယ်မှုနှင့်၎င်းကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုရမည်နည်း။

FPASSTHRU function နှင့် PHP output buffer တို့အကြားဆက်နွယ်မှုနှင့်၎င်းကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုရမည်နည်း။

gitbox 2025-08-26

PHP ၏ဖိုင်စစ်ဆင်ရေးလုပ်ဆောင်ချက်များအကြား FPASSTHRU () သည်ထင်ပေါ်ကျော်သောသို့သော်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်း၏အဓိကလုပ်ဆောင်ချက်မှာဖိုင်၏အဆုံးအထိ Open file pointer တစ်ခုကိုဖတ်ရန်နှင့်ဖတ်ရန်အကြောင်းအရာများကိုတိုက်ရိုက်ထုတ်လွှင့်ရန်ဖြစ်သည်။ PHP ၏ output buffer ယန္တရားနှင့်ပေါင်းစပ်ပြီး FPASSTHRU () ၏အပြုအမူကိုထိခိုက်စေနိုင်သည်။ ဤဆောင်းပါးသည် FPASSTHRU () ၏အခြေခံအသုံးပြုမှုကိုမိတ်ဆက်ပေးပြီး၎င်းနှင့် output buffer နှင့် output buffer တို့အကြားဆက်နွယ်မှုကိုစူးစမ်းလေ့လာပါမည်။

1 ။ FPASSTHRU ၏အခြေခံအသုံးပြုမှုနည်းလမ်း ()

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>

2 ။ output ကိုကြားခံ၏ function ကို

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 ကိုထည့်သွင်းရန်,

3 ။ FPASSTHRU () နှင့် 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 () ကိုမခေါ်ပါကအကြောင်းအရာသည်စေ့စပ်ညှိနှိုင်းမှုတွင်အချိန်ကြာမြင့်စွာမှီဝဲနေနိုင်သည်။

4 ။ ဆင်ခြင်တုံတရားကိုပြင်ဆင်ခြင်း output buffering နှင့် fpassthru ကိုသုံးပါ

FPASSTHRU () ကို ထိရောက်စွာနှင့်လုံခြုံစွာအသုံးပြုသောအခါအောက်ပါအချက်များကိုထည့်သွင်းစဉ်းစားသင့်သည် -

1 ။ ကြားခံမဟာဗျူဟာကိုရှင်းလင်းပါ

  • အကယ်. သင်သည်ယင်ကောင်ပေါ်တွင် (ထိုကဲ့သို့သောဖိုင်များဒေါင်းလုပ်လုပ်ခြင်းကဲ့သို့သော) ကို 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>

2 ။ မှန်ကန်သော http header ကိုသတ်မှတ်ပါ

FPASSTHRU () () output files များမှသုံးသောအခါအကြောင်းအရာများကိုခေါ်ဆိုခြင်းမပြုမီ အကြောင်းအရာ နှင့် အကြောင်းအရာ - သဘောထား ကဲ့သို့သော header အချက်အလက်များကိုသတ်မှတ်ရန်သေချာပါစေ။ ဘာဖြစ်လို့လဲဆိုတော့အကြောင်းအရာ output ဖြစ်တာက header ကို setting ကွောကျရှံ့ပါလိမ့်မယ်။

3 ။ အပိုဆောင်း output ဝင်ရောက်စွက်ဖက်မှုကိုရှောင်ကြဉ်ပါ

FPASSTHRU () () မှ output ပါဝင်ခြင်းကိုမခေါ်မီအခြား HTML, နေရာများ, ဤအရာများသည် output ကိုစီးဆင်းမှုကိုညစ်ညမ်းစေပြီး file downloads ကဲ့သို့သောအခြေအနေများမှန်ကန်မှုကိုဖျက်ဆီးလိမ့်မည်။

V. နိဂုံးချုပ်

FPASSTHRU () သည်ရိုးရှင်းသော output function တစ်ခုမျှသာဖြစ်သော်လည်းကြီးမားသောဖိုင်များကိုလွှဲပြောင်းခြင်းနှင့် output buffer ယန္တရားနှင့်အသုံးပြုခြင်းသည်၎င်း၏ output buffer ယန္တရားနှင့်အသုံးပြုခြင်းသည်၎င်းကိုတန်ဖိုးရှိသည့်ကိရိယာများဖြင့်အကျိုးရှိစေသည်။ output buffering ကိုအသုံးပြုခြင်းသည် output buffering ကိုအသုံးပြုခြင်းသည် developer များကိုပိုမိုထိန်းချုပ်နိုင်ပြီးစွမ်းဆောင်ရည်မြင့်မားသောစွမ်းဆောင်ရည်ဆိုင်ရာယုတ္တိဗေဒကိုတည်ဆောက်ရန်ကူညီနိုင်သည်။

အမှန်တကယ်လိုအပ်ချက်များကိုပေါင်းစပ်ခြင်းနှင့်ကြားခံယန္တရားဆိုင်ရာလုပ်ဆောင်မှုများနှင့် output functions ၏အသုံးပြုမှုအမိန့်ကိုပြင်ဆင်ခြင်းဖြင့် PHP developer များအနေဖြင့်လျှောက်လွှာ၏ရလဒ်အနေဖြင့်ရလဒ်များကိုပိုမိုပြောင်းလဲစေနိုင်သည်။