تابع ()ob در php

سوال

سلام چرا وقتی کد زیر رو با ob_flush می نویسم نتیجه ی ob_get_contentبرابرباbمیشه اما اگه همین کد فقط بجای ob_flushبنویبسیم ob_end_flushنتیجه محتویات بافر یا همونob_get_contentبرابر با abمیشه؟ مگه نبایدend_flushمحتویات قبلی از بین ببره ؟اما برعکس شده

 

حل شد 0
۱۳۹۸/۳/۶ ۲۱:۵۸:۴۶ 1 پاسخ ها کاربر تازه 0

پاسخ ( 1 )

    0
    ۱۳۹۸/۳/۶ ۲۳:۱۸:۵۸

    سلام

    توضیحات رو مطالعه کنید:

    توابع output boffer(ob) به صورت زیر هستند:

    • ob_start => آماده سازی بافر
    • ob_flush=> هر مقداری که در بافر هست رو ارسال میکنه
    • ob_get_contents => محتوای موجود در بافر رو fetch میکنه
    • ob_end_clean => بافر جاری رو میبنده و از حافظه پاک میکنه
    • ob_end_flush => بافر جاری رو میبنده و چاپ میکنه

    حالا مثال زیر رو در نظر بگیرید:

    خروجی دستور بالا میشه:

    حالا اگه بجای ob_end_clean از ob_end_flush استفاده کنید، بافر رو میبنده و مقدار موجود در داخل بافر رو چاپ میکنه.

    و اگه ob_flush رو بعد از دستورات echo بنویسید، بافر رو ارسال و در خروجی نمایش میده.

    موفق باشید.

    بهترین پاسخ

ارسال یک پاسخ