PDA

View Full Version : سوال: بافر کردن خروجی



soroush.r70
چهارشنبه 25 مرداد 1391, 12:21 عصر
این تک کد زیر برای بافر کردن خروجی هستش آیا کد خوبیه تا ازش استفاده بشه در ضمن کسی می تونه یه توضیح کامل در موردش بده.


<?php

// Start buffering
ob_start();

// Output stuff (probably not this simple, might be custom CMS functions...
echo 'Print to the screen!!!';

// Get value of buffering so far
$getContent = ob_get_contents();

// Stop buffering
ob_end_clean();

// Do stuff to $getContent as needed

// Use it
echo 'Now: ' . $getContent;

?>

soroush.r70
پنج شنبه 26 مرداد 1391, 17:32 عصر
کسی نمی تونه توضیحی ارائه بده

reza_edu
پنج شنبه 26 مرداد 1391, 18:19 عصر
توضیح که تو وب زیاد در موردش هست فقط خوب بود میگفتی از چه نظر منظورت هست ؟! راستی تا اونجا که من اطلاع دارم تنها راه همین هست؟ راه دیگه ای داری بگو منم یاد بگیرم.

soroush.r70
پنج شنبه 26 مرداد 1391, 18:22 عصر
می تونی یه توضیح تکمیلی در مورد کد بالا که گذاشتم بدی این

$getContent = ob_get_contents();

چی کار میکنه آیا این کد جواب می ده یا نه...؟

reza_edu
پنج شنبه 26 مرداد 1391, 18:26 عصر
خوب کد بالا میگه شروع کن به ذخیره کردن اطلاعات و به کاربر نده تاوقتی که من بهت میگم البته نمیدونم چرا آخرش کل کار رو پاک میکنی؟! ob_end_flush(); من از این استفاده میکنم . امتحان کن جواب میده

البته قبل پاک کردن میریزی تو یه متغییر

$getContent = ob_get_contents();

ayub_coder
پنج شنبه 26 مرداد 1391, 19:19 عصر
ببینید وقتی شما اطلاعاتی رو چاپ می کنید (چه با echo چه html خالی) این اطلاعات بلافاصله به مرورگر فرستاده میشه.
با دستور ob_start شما به مفسر php میگی که از اینجا به بعد هرچی به سمت مرورگر ارسال شد. بافرش کن (یعنی به مرورگر نفرست) حالا اگه بخوایم این اطلاعاتی ارسال شده (بافر شد) رو بدست بیاریم. از تابع ob_get_contents استفاده می کنیم. ای تابع محتوای بافر رو برای ما بر میگردونه.
حالا اگه در انتها از تابع ob_end_flush استفاده کنیم هر چی که بافر شده بود رو آزاد می کنه به عبارتی می فرسته به سمت مرورگر. انگار که بافر نشده
وقتی از ob_end_clean استفاده میکنیم می گیم که چیزی به خروجی نفرست و همه ی بافر رو خالی کن.انگار اصلا چیزی چاه نشده. به جاش می تونیم اون متغیری که اطلاعات بافر توش قرار داره رو چاپ کنیم.
حالا مزیت اینکار چیه؟ ما میتونیم اطلاعات ارسالی به سمت مرورگر رو تغییر بدیم و سپس به مرورگر بفرستیم. یا تو مواقعی که می خوایم وسط صفحه یا کار از توابعی برای سشن و کوکی استفاده کنیم خیلی به کار میاد.