PDA

View Full Version : بافر کردن چیست و به چه درد میخوره ؟



ealvandi
پنج شنبه 24 خرداد 1386, 16:02 عصر
با سلام خدمت دوستان چندی پیش در یکی از تاپیکهای همین تالار

http://barnamenevis.org/forum/showthread.php?t=69987&page=2

بحث به بافر و جزئیات اون کشیده شد و مدیر محترم oxygenws این پیشنهاد رو دادند:


دوستان دیگه هم اگر در مورد بافر کردن سوال دارند، لطفا در تاپیک مجزایی پی گیر قضیه بشن. ممنون.


من هم پیرو همین پیشنهاد این تاپیک رو ایجاد کردم.

خواهشن دوستان هر اطلاعاتی راجع به بافر کردن ، مزایا ، معایب و ... این کار دارن در اختیار بنده و بقیه بذارن.

لطفا این موضوعات ، سرفصل قرار بگیرن.

1) تعریف بافر؟
2) دلیل بافر کردن؟
3) مزایا ؟
4) معایب استفاده در مکانهای مختلف
5) توضیحات بیشتر ...


قبلا از همکاری همه دوستان و اساتید متشکرم.

armin390
پنج شنبه 24 خرداد 1386, 20:34 عصر
۱) بافر که یعنی بافر؛ میانگیر...
در کل بافر رو یک ظرف در نظر بگیر که خروجی سیستمت رو میریزی توش و در نهایت ظرفت رو خالی میکنی (مثلا اگه محتویات ظرفت ناخالصی داشت می تونی ناخالصی رو برداری)
۲) وقتی می خوای خروجی اسکریپتت رو کنترل کنی و یا روش پردازشی کنی خروجی رو میریزی تو بافر و ...
۳) کنترل روی خروجی
۴) اینکه اگه دز حین بافر کردن کردن مدت زیادی انجام عملیات طول بکشه هیچ خروجی نداری که بعضی اوقات جالب نیست! و البته اشغال حافظه

ealvandi
پنج شنبه 24 خرداد 1386, 22:40 عصر
نظرات استید دیگه ؟؟

jhoseinii
جمعه 25 خرداد 1386, 00:55 صبح
فقط یه سوال
اگه بخام محتویات بافر، بجای نمایش، توی یه فایل ذخیره بشه راهی هست؟
طوری که هرچی echo میشه بریزه تو فایل

ممنون :)

oxygenws
جمعه 25 خرداد 1386, 01:29 صبح
خیلی هاش رو آرمین گفت، اما من هم دوباره از صفر نظراتم رو می گم.

۱- حافظهء موقتی.

۲- احتمالا منظورت در برنامه نویسی است... چون خیلی جاها بافر کردن داریم. (ضمن اینکه کش کردن تقریبا همون بافر کردنه! البته فرق دارند هااا) پس در برنامه نویسی برای تغییر خروجی یا ارسال کردن خروجی به رسانه های دیگه یا کش کردن.

۳- مزیتی نداره :) کاربرد داره، اما مزیتی نداره.

۴- مصرف حافظه بالا می ره.

۵- اصولا صفحه ای توسط برنامه نویس (PHP) لازم نیست بافر بشه، فقط در جاهایی که دقیقا لازمه بافر کنید کاربرد داره، مثلا برای ایجاد سیستم های کشینگ به درد می خوره. (اما استفاده از اون برای دور زدن اون تابع header احمقانه است)

در خیلی جاها بافر داریم، مثلا خود آپاچی یا مرورگر شما هم بافر داره... اما این بافر ها خیلی با این چیزی که ما داریم در موردش صحبت می کنیم فرق داره.

تفاوت بافر و کش:
بافر حالت استریم داره، یعنی داده داخلش میاد و میره و تموم میشه، سپس دادهء بعدی میاد و میره و ... (عبارت «داده» در جملهء بالا می تونه به «مجموعهء داده» تغییر کنه!)
اما میشه گفت کش ثابت تر از بافر می باشد و حالت استریم نداره.


اگه بخام محتویات بافر، بجای نمایش، توی یه فایل ذخیره بشه راهی هست؟RTFM (http://php.net/manual/en/)

موفق باشید.

ealvandi
جمعه 25 خرداد 1386, 10:45 صبح
(اما استفاده از اون برای دور زدن اون تابع header احمقانه است)


چه مشکلی پیش میاد؟

jhoseinii
جمعه 25 خرداد 1386, 13:07 عصر
اگه بخام محتویات بافر، بجای نمایش، توی یه فایل ذخیره بشه راهی هست؟


RTFM

موفق باشید.



خوب، من یه سوال پرسیدم، شما کل manual رو گزاشتید جلوم؟!
با این حال، تشکر

oxygenws
جمعه 25 خرداد 1386, 18:03 عصر
چه مشکلی پیش میاد؟

۴- مصرف حافظه بالا می ره.
وقتی دلیلی برای این کار نیست، چرا باید ازش استفاده بشه؟!!
مثلا من اگر توی هر صفحه ام یک ایمیل تشکر واسه خودم بفرستم هم خوبه!!! اشکالی هم نداره، ولی وقتی نیاری به این کار نیست، چرا باید ارش استفاده کنم؟!!
به این کار می گن یه کار احمقانه! کاری که دلیلی برای انجامش نیست!