ob_start
تابع ob_start() یک «بافر خروجی (Output Buffer)» می سازد. یعنی خروجی ها اول ذخیره می شوند، بعدا یا با قانون خاص، به مرورگر می روند. این کار برای کنترل و بهینه سازی خروجی عالی است.
کاربرد بافر خروجی با ob_start
با ob_start() می توانیم خروجی را موقتا نگه داریم. سپس می توانیم آن را پاک کنیم، یا بفرستیم. حتی می توانیم یک «کالبک (Callback)» بدهیم تا قبل از ارسال، محتوا پردازش شود. همچنین می توان با «پرچم ها (Flags)» اجازه پاک کردن یا فلاش کردن را مدیریت کرد.
نمونه کد از منبع
این مثال یک بافر می سازد، متن اول را نمی فرستد، و متن دوم را می فرستد.
<?php
ob_start();
echo "This content will not be sent to the browser.";
ob_end_clean();
echo "This content will be sent to the browser.";
?>
پارامترها و رفتار
callback: اختیاری. محتوای بافر را قبل از ارسال پردازش می کند. پارامترهای آن buffer و phase هستند. مقدار phase می تواند نشان دهد بافر تازه شروع شده، در حال فلاش است یا نهایی می شود.
chunk_size: اختیاری. اگر بزرگ تر از صفر باشد، وقتی طول محتوا از آن گذشت، بافر خودکار فلاش می شود.
flags: اختیاری. پیش فرض PHP_OUTPUT_HANDLER_STDFLAGS است. این پرچم ها تعیین می کنند پاک کردن، فلاش کردن، یا حذف بافر مجاز باشد.
گام های سریع استفاده
- با
ob_start()بافر خروجی را فعال کن. - هر چه لازم است
echoکن و بررسی کن. - در پایان، با
ob_end_clean()پاک کن یا باob_end_flush()بفرست.
نکته: برای فشرده سازی، از هندلرها کمک بگیر. مثلا «فشرده سازی با بافر خروجی» با ob_gzhandler انجام می شود.
پیوندهای داخلی
- فهرست هندلرهای فعال با
ob_list_handlers. - تعداد بافرهای فعال با
ob_get_level.
جمع بندی سریع
ob_start()بافر خروجی می سازد.- می توان خروجی را پاک یا ارسال کرد.
- کالبک، محتوا را پیش از ارسال تغییر می دهد.
- پرچم ها رفتار پاک/فلاش/حذف را کنترل می کنند.