<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 本文旨在解释 PHP 中 fpassthru 和 file_get_contents 两个函数的区别,并分析在实际应用中如何选择它们。</span></span><span>
</span><span><span class="hljs-comment">// ------------------------------------------------------------</span></span><span>
</span><span><span class="hljs-comment"># fpassthru 和 file_get_contents 有什么区别?什么时候应该优先选择 fpassthru 函数?</span></span><span>
在 PHP 中处理文件内容时,`</span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>()` 和 `</span><span><span class="hljs-title function_ invoke__">fpassthru</span></span><span>()` 是两个常用的函数,它们虽然都可用于读取文件,但使用场景和性能表现存在明显差异。了解它们的差异,对于编写高效、可靠的代码至关重要。
</span><span><span class="hljs-comment">## file_get_contents 简介</span></span><span>
`</span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>()` 是一个一次性读取整个文件内容的函数。它将文件内容作为字符串返回,适用于文件体积不大,且需要对内容进行进一步处理的场景。
**语法:**
```php
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span></span>
ရိုးရှင်းသောနှင့်အသုံးပြုရန်လွယ်ကူသည်။
အကြောင်းအရာ variable ကိုမှတိုက်ရိုက်တာဝန်ပေးနိုင်ပါတယ်။
ကွန်ယက်စီးဆင်းမှုအတွက်အသုံးပြုနိုင်သည် (HTTP နှင့် FTP protocols များကိုထောက်ပံ့သည်) ။
အားနည်းချက် -
၎င်းသည်ဖိုင်များကိုမှတ်ဉာဏ်သို့တစ်ကြိမ်တွင်ဖတ်လိမ့်မည်, ၎င်းသည်ကြီးမားသောဖိုင်များအတွက်မသင့်တော်ပါ။
အရင်းအမြစ်စီးဆင်းမှုအပေါ်ထိန်းချုပ်မှုလျော့နည်း။
FPASSTHRU () သည် ဖိုင်အဆုံးအထိဒေတာများကိုစတင်ဖတ်ရှုပြီးဖိုင်၏အဆုံးအထိစာဖတ်ခြင်းကိုစတင်သည်။ ၎င်းသည်များသောအားဖြင့်ဖိုင်တွဲများကို 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">'rb'</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>
အားသာချက်:
ကြီးမားသောဖိုင်များသို့မဟုတ် streaming output (ဥပမာဗီဒီယိုများကဲ့သို့ output များအတွက်သင့်တော်သည်။
ဒါဟာမှတ်ဉာဏ်တွေအများကြီးတက်ယူလိမ့်မည်မဟုတ်ပါ။
အလယ်အလတ် variable တွေကိုရှောင်ရှားရန်တိုက်ရိုက် output ကို။
အားနည်းချက် -
ဖိုင်အကြောင်းအရာကို variable တစ်ခုအဖြစ်တိုက်ရိုက်ပြန်လည် ရယူ. မရပါ။
အသုံးမပြုမီဖိုင်လက်ကိုင်ကိုကိုယ်တိုင်ဖွင့်ရန်လိုအပ်သည်။
သီးခြားထင်ရှားသော | File_get_contents | fpassthru |
---|---|---|
Value ကိုပြန်သွားပါ | string (ဖိုင်အကြောင်းအရာ) | output file content, အဘယ်သူမျှမပြန်လာတန်ဖိုး |
မှတ်ဉာဏ်အသုံးပြုမှု | ဖိုင်တစ်ခုလုံးကိုမှတ်ဉာဏ်ထဲသို့တင်ထားသည် | streaming streaming စာဖတ်ခြင်း, မှတ်ဉာဏ်အသုံးပြုမှု |
အပြောင်းအလဲနဲ့များအတွက်သင့်လျော်သောဒေတာအရွယ်အစား | ဖိုင်ငယ်များ (ဥပမာ configurations, တင်းပလိတ်များကဲ့သို့) | ကြီးမားသောဖိုင်များ (ထိုကဲ့သို့သောဗွီဒီယိုများကဲ့သို့အကြောင်းအရာများ) |
အသုံးပြုမှုရှုပ်ထွေး | လွယ်ကူသော | အနည်းငယ်ရှုပ်ထွေးသော (လက်ကိုင်ကိုဖွင့်ရန်လိုအပ်သည်) |
တိုက်ရိုက် output ကိုမှဖြစ်စေ | မဟုတ် | ဟုတ်ကဲ့ |
FPASSTHRU () ကိုအောက်ပါအခြေအနေများအတွက်အကြံပြုသည်။
ဖိုင်ကြီးများကိုဒေါင်းလုပ်ဆွဲရန် (ဇစ်, PDF, MP4) :
၎င်းသည်အလွန်အကျွံမှတ်ဉာဏ်အသုံးပြုမှုကိုရှောင်ရှားနိုင်ပြီးစွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
အချက်အလက်များကိုစီးဆင်းနေသော client သို့လွှဲပြောင်းခြင်း -
HTTP header နှင့် download interface ကို Readfile () သို့မဟုတ် FPASSTHRU () နှင့်ပေါင်းစပ်။ အကောင်အထည်ဖော်နိုင်သည်။
အလယ်အလတ်ပြုပြင်ခြင်းမရှိဘဲတိုက်ရိုက် output ကို :
ဖိုင်များကိုသာလွှဲပြောင်းရန်သာလိုအပ်ပါကအကြောင်းအရာခွဲခြမ်းစိတ်ဖြာခြင်းသို့မဟုတ်ပြုပြင်မွမ်းမံရန်မလိုအပ်ပါ။
ဥပမာ - FPASSTHRU () ဖိုင်ဒေါင်းလုပ် function ကိုအကောင်အထည်ဖော်ရန်အသုံးပြုပါ
<span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-string">'large-file.zip'</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="'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">basename</span></span><span>(</span><span><span class="hljs-variable">$filename</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">$filename</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-variable">$filename</span></span><span>, </span><span><span class="hljs-string">'rb'</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-keyword">exit</span></span><span>;
</span></span>
File_get_Contentents () သို့မဟုတ် FPASSTHRU () () fpassthru () ရွေးချယ်မှုသည်သင်လုပ်ဆောင်မည့်ဖိုင်ကိုမည်သို့လိုအပ်သနည်း။ အကယ်. သင်သည်ဖိုင်အကြောင်းအရာကို 0 င်ရောက်ရန်နှင့်ယုတ္တိရှိသောလုပ်ဆောင်မှုများပြုလုပ်ရန်လိုအပ်ပါက File_get_Contents () ကို ရွေးချယ်ရန်ပိုမိုအဆင်ပြေသည်။ အကယ်. သင်သည်ဖောက်သည်များအားလုပ်ငန်းလည်ပတ်ခြင်းမရှိဘဲဖိုင်များကိုထိရောက်စွာလွှဲပြောင်းရန်သာလိုအပ်ပါက FPASSTHRU () သည် သင့်တော်သောရွေးချယ်မှုဖြစ်သည်။
သူတို့၏ကွဲပြားခြားနားမှုများကိုနားလည်ခြင်းသည်သင်၏လိုအပ်ချက်များအပေါ် အခြေခံ. ပိုမိုထိရောက်သောအရည်ကြသော PHP အစီအစဉ်များကိုရေးရန်ကူညီနိုင်သည်။
<span></span>
သက်ဆိုင်သောတက်(ဂ်)များ:
file_get_contents