လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP စာမျက်နှာပြန်မလာမီစာမျက်နှာ၏အပြည့်အဝအကြောင်းအရာများရရှိရန် ob_get_contontents () ကိုအသုံးပြုနည်း။ စစ်ဆင်ရေးနည်းလမ်း၏အသေးစိတ်ရှင်းပြချက်

PHP စာမျက်နှာပြန်မလာမီစာမျက်နှာ၏အပြည့်အဝအကြောင်းအရာများရရှိရန် ob_get_contontents () ကိုအသုံးပြုနည်း။ စစ်ဆင်ရေးနည်းလမ်း၏အသေးစိတ်ရှင်းပြချက်

gitbox 2025-08-23
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
 * ဤဥပမာသည်သရုပ်ပြခြင်းအတွက်သာဖြစ်သည်,ယခင်အပိုင်းသည်ဆောင်းပါး၏အကြောင်းအရာနှင့်ဘာမှမဆိုင်ပါဘူး
 * သင်ဒီမှာမဆိုနေရာချနိုင်ပါတယ် PHP Initialization ယုတ္တိဗေဒ
 */</span>

</span><span><span class="hljs-variable">$start_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">microtime</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// script ကို script အချိန်ကိုမှတ်တမ်းတင်ပါ</span></span><span>

</span><span><span class="hljs-comment">// ဆောင်းပါးနှင့်မသက်ဆိုင်သောအချို့သောကုဒ်များကိုတုပပါ</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">dummy_log</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$message</span></span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">'dummy.log'</span></span><span>, </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">' - '</span></span><span> . </span><span><span class="hljs-variable">$message</span></span><span> . PHP_EOL, FILE_APPEND);
}

</span><span><span class="hljs-title function_ invoke__">dummy_log</span></span><span>(</span><span><span class="hljs-string">"ဆောင်းပါးစာမျက်နှာသို့သွားရောက်ခဲ့သည်"</span></span><span>);

</span><span><span class="hljs-meta">?&gt;</span></span><span>
&lt;hr&gt;
</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * PHP စာမျက်နှာ redirect ဘယ်လိုသုံးရမလဲ ob_get_contents() စာမျက်နှာ၏အပြည့်အဝပါဝင်ပါ?စစ်ဆင်ရေးနည်းလမ်း၏အသေးစိတ်ရှင်းပြချက်
 *
 * တည်နေ PHP ဖွံ့ဖြိုးမှုအောက်မှာ,我们有时需要တည်နေ执行 header('Location: ...') redirecting မတိုင်မီ,
 * ပထမ ဦး စွာသိမ်းဆည်းခြင်းသို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်လက်ရှိစာမျက်နှာ၏အပြည့်အဝ output အကြောင်းအရာများကိုရယူပါ,ဤသည် output buffer function ကိုအသုံးပြုနိုင်သည့်အခါဖြစ်ပါတယ်
 * ob_get_contents()。
 *
 * တစ်、အဘယ်ကြောင့် output ကိုကြားဖူးမှုကိုအသုံးပြုပါ?
 * -----------------------
 * တည်နေ PHP အလယ်ပိုင်း,များသောအားဖြင့်အကြောင်းအရာသည် browser ကိုတိုက်ရိုက်ထုတ်ပေးသည်,တစ်旦输出后,PHP သင်ပို့လိုက်သော header အချက်အလက်များကိုသင်မပြုပြင်နိုင်တော့ပါ,
 * 这会导致တည်နေတယ်လီဖုန်းဆက်ခြင်း header() redirecting အခါပေါ်လာသည် “headers already sent” အမှား。
 * output ကိုကြားဖူးအောင်လုပ်ပါ(Output Buffering)နိုင် PHP 将输出暂存到内存အလယ်ပိုင်း,ဒါကြောင့်ငါတို့ကဖတ်နိုင်,
 * 又能တည်နေ发送给浏览器前做处理。
 *
 * နှစ်、ob_get_contents() ၏အခန်းကဏ်။
 * --------------------------
 * ob_get_contents() လက်ရှိ output buffer ၏ contents ရရန်အသုံးပြုခဲ့သည်。အဆိုပါဝုဒ်ကိုအသုံးပြုရမည်ဖြစ်သည် ob_start() output ကို buffering enabled ဖြစ်ပါတယ်。
 *
 * သုံး、စစ်ဆင်ရေးခြေလှမ်းများ
 * ----------------
 * 1. တည်နေ页面最开始တယ်လီဖုန်းဆက်ခြင်း ob_start() အဆိုပါကြားခံဖွင့်。
 * 2. စာမျက်နှာအကြောင်းအရာရေးပါ,ဤရွေ့ကား contents တွေကိုတိုက်ရိုက် output ကိုဖြစ်မယ့်အစားယာယီသိုလှောင်ထားလိမ့်မည်。
 * 3. တယ်လီဖုန်းဆက်ခြင်း ob_get_contents() အဆိုပါကြားခံအတွက် contents တွေကိုရယူပါ。
 * 4. တည်နေ获取内容后,၎င်းကိုဖိုင်တစ်ခုသို့သိမ်းဆည်းနိုင်သည်、ဒေတာဘေ့စ်,သို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်အပြောင်းအလဲနဲ့လုပ်ဆောင်ပါ。
 * 5. 最后တယ်လီဖုန်းဆက်ခြင်း ob_end_clean() သို့မဟုတ် ob_end_flush():
 *    - ob_end_clean():အဆိုပါ buffer အကြောင်းအရာကိုရှင်းလင်းပါ,browser မှ output ကိုမ。
 *    - ob_end_flush():browser မှ output buffer အကြောင်းအရာ。
 * 6. တည်နေကြားခံသန့်ရှင်းရေး后执行 header('Location: ...') retirect。
 *
 * လေး、နမူနာကုဒ်
 * ------------
 * 以下示例展示了ကဲ့သို့何တည်နေ重定向前获取页面内容并保存到文件:
 */</span>

</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(); </span><span><span class="hljs-comment">// 1. အဆိုပါကြားခံဖွင့်</span></span><span>

</span><span><span class="hljs-comment">// 2. စာမျက်နှာ output ကို Simulate</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;h1&gt;ဒီ site မှကြိုဆိုပါသည်&lt;/h1&gt;"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;p&gt;ဤတွင်စာမျက်နှာ၏အကြောင်းအရာဖြစ်ပါတယ်。&lt;/p&gt;"</span></span><span>;

</span><span><span class="hljs-comment">// 3. Buffer အကြောင်းအရာကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$pageContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</span></span><span>();

</span><span><span class="hljs-comment">// 4. အကြောင်းအရာကိုဖိုင်ကိုသိမ်းဆည်းပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">'page_backup.html'</span></span><span>, </span><span><span class="hljs-variable">$pageContent</span></span><span>);

</span><span><span class="hljs-comment">// 5. ကြားခံသန့်ရှင်းရေး</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();

</span><span><span class="hljs-comment">// 6. redirection လုပ်ဆောင်ပါ</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: https://www.example.com"</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;

<span class="hljs-comment">/**
 * ငါး、မှတ်သားရန်အရာ
 * ------------
 * - 必须တည်နေ任何实际输出前တယ်လီဖုန်းဆက်ခြင်း ob_start(),ဒီလိုမှမဟုတ်ရင် buffer အကြောင်းအရာကိုဖမ်းယူလို့မရပါဘူး。
 * - လှျင် header() redirection မတိုင်မီ output ကိုရှိပြီးသားရှိပါတယ်,နှင့် buffering ဖွင့်မပေးပါ,အမှားတစ်ခုသတင်းပို့ပါလိမ့်မယ်。
 * - သိမ်းဆည်းထားသောအကြောင်းအရာများသည်လက်ရှိအကြောင်းအရာများသာပါရှိသည် PHP ဇာတ်ညွှန်း output ကို,ပြင်ပအရင်းအမြစ်များမရှိပါ(ကဲ့သို့ CSS、JS、ရုပ်ပုံ)。
 *
 * အကျဉ်းချုပ်:
 * -----
 * ob_get_contents() 是တည်နေ PHP စာမျက်နှာပြန်ညွှန်းမတိုင်မီ output ကိုရယူရန်အသုံးဝင်သောကိရိယာ。
 * ကိုက်ညီ ob_start()、ob_end_clean() တန်းတူ function ကို,可以တည်နေ不影响 HTTP ဦး ခေါင်း၏အမှု၌,
 * 完整捕获页面内容用于备份သို့မဟုတ်处理,သစ်ထုတ်လုပ်ရေးအတွက်အလွန်ကြီးစွာသော、debugging နှင့် cache ကို cache。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>