PDA

View Full Version : حرفه ای: آزاد سازی فضا



trade_mark
دوشنبه 26 مهر 1389, 19:40 عصر
سلام به اهالی برنامه نویس
یه سوال برام پیش آمده که جوابش تا حدودی مبهم است
وقتی با بانک اطلاتی ارتباط بر قرار می کنیم و کوئری مورد نطر رو می زنیم ،یه فضایی از حافظه سرور رو می گیره
با چه دستوری می توان این حافظه را آزاد کرد.
مثلا من با دستور mysql_query یه کوئری را اجرا می کنم حالا با چه دستوری می توانم این فضا را آزاد کنم؟

tafrihat
دوشنبه 26 مهر 1389, 19:46 عصر
یعنی فری کنی؟

funpatogh
دوشنبه 26 مهر 1389, 19:46 عصر
<?php
mysql_free_result($result);
?>

trade_mark
دوشنبه 26 مهر 1389, 21:43 عصر
<?php
mysql_free_result($result);
?>

سوال بعدم در مورد اینه که آیا این عمل رو سرعت سایت هم تاثیر دارد؟
اگه این دستور بعد از چند کوئری سنگین اجرا نشه چه تاثیراتی خواهد داشت.

xoogle.ir
دوشنبه 26 مهر 1389, 22:19 عصر
همزمان با تمام شدن عملیات پردازش تمام فضاهای حافظه اعم از متغیر و result و .... خالی میشه پس به نظر من اگر در مدت زمان خیلی کم پس از گرفتن کوئری صفحه شما هم تمام میشه و وب سرور خروجی html رو تولید میکنه تاثیر زیادی نداره.

استفاده از این راه بیشتر زمانی توجیه داره که شما اول کدتون یک کوئری میگیرید و بعدش خطوط زیادی رو بدون اینکه کوئری جدیدی از بانک بگیرید عملیات پردازش روی داده ها و چاپ خروجی رو انجام میدید. این موقع بهتره که فضای اشغال شده رو با این دستور آزاد کنید.

funpatogh
دوشنبه 26 مهر 1389, 22:21 عصر
Using this function may actually increase the amount of memory used. In my case, the script used 208 bytes less memory when *not* using mysql_free_result().
Check for yourself: call memory_get_usage() at the end of the script.

طبق گفته خود php.net اگر استفاده نکنیم 208 بایت فضا بیشتر از رم اشغال میشه پس بهتره که استفاد بشود
اما فکر کنم توی نسخه های جدید استفاده نکنیم هم خودش این کار انجام میشه

trade_mark
دوشنبه 26 مهر 1389, 22:23 عصر
با تشکر از دوستانی که در این بحث شرکت کردند و خواهند کرد
راستش من فرم های زیادی و بدون اینکه این مسئله رو در نظر بگیرم طراحی کردم.و الان برام سخته که بخوام تک تک اون ها رو ویرایش کنم.
آیا با این دستور هم حافظه ها آزاد میشه؟

mysql_close

eshpilen
دوشنبه 26 مهر 1389, 23:06 عصر
باید بشه چون وقتی شما کانکشن رو میبندی دیگه نمیتونی از منابعی که سیستم براش رزرو کرده بود استفاده ای بکنی. بنابراین سیستم اون منابع رو آزاد میکنه.