pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Output Buffering در PHP
03-04-2014, 03:49 PM
ارسال: #1
Output Buffering در PHP
یکی از امکانات بسیار مفید PHP برای کنترل خروجی Output buffering میباشد.با استفاده از این امکان میتونیم تصمیم بگیریم که چه چیزی و در چه زمانی به خروجی ارسال بشه.

در ادامه به معرفی این امکان در PHP میپردازیم.

هنگامی که یک کد PHP اجرا میشه یک صفحه HTML از سمت سرور به مرورگر ارسال میشه.اما برای اینکه پس ساخت یک صفحه HTML نخواسته باشیم به مرورگر ارسال بشه چه کاری باید انجام بدیم؟ در اینجا Output buffering وارد میشه.

در حالت معمول PHP اینکار رو انجام نمیده اما پس از شروع بافر خروجی (Output Buffering) تمام محتویات در بافر داخلی نگهداری میشن سپس به مرورگر ارسال میشن.
چگونه بافر خروجی رو فعال کنیم؟

برای شروع Output Buffering فقط کافیه تابع ob_start رو فراخوانی کنیم :

کد php:
ob_start() 


چگونه محتویات بافر را به مرورگر ارسال کنیم ؟

هنگامی که Output Buffering رو استارت میکنیم تا زمانی که کد ما به انتها نرسیده محتویات به مرورگر ارسال نمیشه.برای ارسال محتویات بافر به خروجی باید از کد زیر استفاده کنیم :

کد php:
ob_flush(); 

اما پس از فراخوانی تابع بالا PHP به ذخیره محتویات در بافر ادامه میده.برای اینکه پس از ارسال محتویات بافر به خروجی و توقف ذخیره محتویات در بافر باید از تابع زیر استفاده کنیم :

کد php:
ob_end_flush() 

حذف محتویات بافر
برای حذف محتویات بافر از دستور زیر استفاده میکنیم :

کد php:
ob_clean() 

اما مثل ob_flush بعد از اجرای این دستور باز هم PHP به بافر کردن کردن محتویات ادامه میده. پس برای اینکه به PHP بگیم پس از خالی کردن بافر دیگه به بافر کردن ادامه نده باید از دستور زیر استفاده کنیم :

کد php:
ob_end_clean(); 

دریافت محتویات بافر
برای چک کردن محتویاتی که داخل بافر ذخیره شده از تابع زیر استفاده میکنیم :

کد php:
ob_get_content(); 

مزایای استفاده از Output Buffering

در هنگام اجرای کدهای PHP بدون استفاده از بافر خروجی HTML به صورت تکه تکه به مرورگر ارسال میشه.اما با استفاده از بافر خروچی HTML داخل یک متغیر ذخیره میشه سپس یکجا به مرورگر ارسال میشه.

Output Buffering مزیتهایی رو در بر داره که در زیر به تعدادی از اونها اشاده میکنیم :

استفاده از Output Buffering زمان دانلود و اجرای اسکریپت مون رو کاهش میده به خاطر اینکه به صورت یکجا به مرورگر ارسال میشه و تکه تکه ارسال نمیشه.
میتونیم تمام محتویات HTML رو در یک متغیر ذخیره کنیم سپس به خروجی بفرستیم.
اگر شما با پیغام خطای ” (Warning: Cannot modify header information – headers already sent by (output ” برخورد کردید با استفاده از Output buffering میتونیم از این پیغام نجات پیدا کنیم !!

فشرده کردن محتویات بافرخروجی

برای فشرده کردن محتویات بافر که قراره به خروجی ارسال بشه میتونیم از کد زیر استفاده کنیم :

کد php:
// start output buffering at the top of our script with this simple command
ob_start('ob_gzhandler'); // "ob_gzhandler" as a parameter of ob_start
?>
Hello world!
<?php
// end output buffering and send our HTML to the browser as a whole
ob_end_flush();
?>

تنها تغیری که کد بالا داشته مربوط به تابع ob_start که مقدار ob_gzhandler رو برای فشرده کردن محتویات بافر بهش ارسال کردیم.
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition