PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည် file download function ကို script များဖြင့်ဖြည့်ဆည်းပေးရန်လိုအပ်သည့်အခါကျွန်ုပ်တို့သည်အချို့သောကြားခံနှင့်သက်ဆိုင်သောပြ problems နာအချို့ကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ အထူးသဖြင့်ဖိုင်အမျိုးအစားအကြောင်းအရာများကိုမဖော်ပြမီကြိုတင်မမြင်နိုင်သောအဖြူရောင်စာလုံးများသို့မဟုတ် output usparment ပေါ်လာနိုင်သည်။ ဤအချိန်တွင်သင်သည် output buffer ကို အသုံးပြု. အသုံးပြုသူအားမှန်ကန်စွာလွှဲပြောင်းပေးနိုင်ရန် ob_clean function ကိုအသုံးပြုရန် OB_END_CLEAN function ကိုသုံးရန်လိုအပ်သည်။
output buffering ဆိုသည်မှာ PHP သည် scripts scripts များကို excapes သည် scripts များကို execute လုပ်သည့်အခါ (ဥပမာ HTML code, text encages စသည်) ကို browser သို့ချက်ချင်းပို့ပေးလိမ့်မည်မဟုတ်ပါ။ PHP သည်ဇာတ်ညွှန်းကိုကွပ်မျက်ခံရသည်အထိသို့မဟုတ်သတ်သတ်မှတ်မှတ် output function ကိုဟုခေါ်သည်အထိ Brofrer ကို browser သို့မပို့ပါ။
ဤယန္တရားသည် output ကိုထိထိရောက်ရောက်ထိန်းချုပ်နိုင်ပြီး scrientution တွင်မလိုအပ်သောအချက်အလက်များကိုမပို့ပါနှင့်။ မလိုအပ်သောကွန်ယက်ဝန်ထုပ်ဝန်ပိုးကိုလျှော့ချရန်နှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်ခြင်းကိုရှောင်ရှားနိုင်သည်။
အချို့သောကိစ္စရပ်များတွင်အထူးသဖြင့်ဖိုင်ကူးယူခြင်းလုပ်ဆောင်နိုင်စွမ်းကိုပေးသည့်အခါ PHP scripts သည် browsers မှခွဲထုတ်မည့်ဖိုင်အကြောင်းအရာကိုမပို့မီ PHP scripts သည် file contents သို့မဟုတ် whitespace ဇာတ်ကောင်များကို output လုပ်နိုင်သည်။ ဤအရာကိုရှောင်ရှားရန် developer များသည်ဖိုင်ကိုအကြောင်းအရာများကိုမထုတ်ပြန်မီကြားခံကိုသန့်ရှင်းရေးလုပ်ရန်လိုအပ်သည်, မလိုအပ်သော output data မရှိပါ။
ဥပမာအားဖြင့်, သင့်တွင်ဒေတာဘေ့စ်မှဖိုင်တစ်ခု၏ contents များကိုဖတ်ရှုပြီး download လုပ်ပေးသည့် PHP script တစ်ခုရှိသည်ဆိုပါစို့။ အကယ်. script သည်မည်သည့်ဆီလျှော်သောအကြောင်းအရာကိုမဆိုထုတ်ဖော်ပြောဆိုပါက browser သည်အကြောင်းအရာကို ဦး စွာလက်ခံရရှိလိမ့်မည်။
ယခုအချိန်တွင် ob_clean function သည်အသုံးဝင်သည်။ ၎င်းသည်လက်ရှိကြားခံ၏ contents ကိုသန့်ရှင်းစေပြီး output ကိုစီးဆင်းမှုကိုပိတ်ထားလိမ့်မည်။
output output buffer ကိုဖွင့်ပါ။
PHP တွင် output buffer သည်များသောအားဖြင့်အလိုအလျောက်ဖွင့်ထားသော်လည်း output buffer ကိုဖွင့်ရန် Ob_start () ကိုအတိအလင်းခေါ်ဆိုနိုင်သည်။ ၎င်းသည်ဖိုင်များကို download လုပ်သည့် scripts တွင်အလွန်အရေးကြီးသည်, အဘယ်ကြောင့်ဆိုသော်၎င်းသည်သင် browser ကိုမည်သည့်အချိန်တွင်ထုတ်မည်ကိုဆုံးဖြတ်ရန်မဆုံးဖြတ်မီ output ကို cache လုပ်ရန်ခွင့်ပြုသည်။
<span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// output ကြားခံစတင်ပါ</span></span><span>
</span></span>
ဖိုင်ကူးယူခြင်းမပြုမီယုတ္တိဗေဒလုပ်ဆောင်ခြင်း -
File download မလုပ်ခင်သုံးစွဲသူခွင့်ပြုချက်ကိုအတည်ပြုခြင်း,
<span><span><span class="hljs-comment">// ဖိုင်ပြုပြင်ခြင်းယုတ္တိဗေဒ Simulate Simulate</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'path/to/your/file.txt'</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-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'File not found'</span></span><span>);
}
</span><span><span class="hljs-comment">// download header သတင်းအချက်အလက် set up</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: application/octet-stream'</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="'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">basename</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>) . </span><span><span class="hljs-string">'"'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Length: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">filesize</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>));
</span></span>
ကြားခံသန့်ရှင်းရေး:
ဖိုင်ကိုမပို့မီ OB_END_CLEAN ကိုရှင်းလင်းရန် OB_END_CLEAN () သည် ယခင် output content ကိုသန့်ရှင်းရေးလုပ်ရန်သေချာစေရန်ကြားခံကိုရှင်းလင်းရန်။ ဤအချိန်တွင် PHP သည်မည်သည့်ဖြစ်နိုင်ချေရှိသော 0 င်ရောက်စွက်ဖက်မှုကိုရှောင်ရှားရန် PHP ကို browser သို့မပို့ပါ။
<span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>(); </span><span><span class="hljs-comment">// output buffer အကြောင်းအရာကိုရှင်းလင်းပါ</span></span><span>
</span></span>
output ဖိုင်အကြောင်းအရာ:
ထို့နောက်ဖိုင်ကိုလုံခြုံစွာထုတ်ပေးနိုင်သည်။ ဥပမာအားဖြင့်, ဖိုင်၏ contents ကို browser သို့ထုတ်လွှင့်ရန်နှင့်ဖိုင်ဒေါင်းလုပ်ကိုစတင်ရန် Readfile () function ကိုသုံးပါ။
<span><span><span class="hljs-title function_ invoke__">readfile</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>); </span><span><span class="hljs-comment">// output ဖိုင်အကြောင်းအရာ</span></span><span>
</span><span><span class="hljs-keyword">exit</span></span><span>; </span><span><span class="hljs-comment">// End Script ကွပ်မျက်,အခြားမည်သည့်အကြောင်းအရာမှ output ကိုသေချာအောင်လုပ်ပါ</span></span><span>
</span></span>
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// output ကြားခံစတင်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-comment">// ဖိုင်လမ်းကြောင်း</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'path/to/your/file.txt'</span></span><span>; </span><span><span class="hljs-comment">// 请替换为实际ဖိုင်လမ်းကြောင်း</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-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'File not found'</span></span><span>);
}
</span><span><span class="hljs-comment">// download header သတင်းအချက်အလက် set up</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: application/octet-stream'</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="'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">basename</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>) . </span><span><span class="hljs-string">'"'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Length: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">filesize</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>));
</span><span><span class="hljs-comment">// output ကြားခံသန့်ရှင်းရေး</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
</span><span><span class="hljs-comment">// output ဖိုင်အကြောင်းအရာ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">readfile</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>);
</span><span><span class="hljs-comment">// End Script ကွပ်မျက်</span></span><span>
</span><span><span class="hljs-keyword">exit</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ဖိုင်မဖွင့်မီ ob_crem_clean () function ကို အသုံးပြု. output buffer ကိုသန့်ရှင်းရေးလုပ်ခြင်းဖြင့် PHP script တွင်မသက်ဆိုင်သောအကြောင်းအရာများထုတ်လုပ်မှုကိုရှောင်ရှားနိုင်ပြီးအသုံးပြုသူကိုအသုံးပြုသူကိုချောချောမွေ့မွေ့ပြုလုပ်နိုင်သည်ကိုကျွန်ုပ်တို့ရှောင်ရှားနိုင်သည်။ ဤနည်းလမ်းသည် File downloads များကိုကိုင်တွယ်သောအခါအလွန်ထိရောက်သောကြောင့်မမျှော်လင့်သောရလဒ်ကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုကာကွယ်နိုင်သည်။ output buffer နှင့် ob_clean () function ကိုဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည် file download functions file functions ၏တည်ငြိမ်မှုနှင့်အသုံးပြုသူအတွေ့အကြုံကိုတိုးတက်စေရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်။