PDA

View Full Version : سوال: آیا پی اچ پی موقع استفاده از file_exists اطلاعات فایلهای موجودر رو کش می کنه؟



idocsidocs
شنبه 10 تیر 1391, 19:07 عصر
اگر جواب مثبت هست لطفا بگید که فایلها برای چه مدت کش می شن.

eshpilen
یک شنبه 11 تیر 1391, 00:55 صبح
بهترین منبع در منوال در این زمینه توضیحات تابع clearstatcache است. حداقل تاجاییکه تاحالا دیدم و الان براحتی زیر دستم بود!
بر اساس توضیحاتش، بله این تابع هم تحت تاثیر کش واقع میشه، اما یخورده جزییات بیشتری داره.

نکتهء مهمش اینجاست:


if you call file_exists() on a file that doesn't exist, it will return FALSE until you create the file. If you create the file, it will return TRUE even if you then delete the file.


ترجمه: «اگر شما file_exists را روی فایلی که وجود ندارد فراخوانی کنی، تا زمانیکه فایل را ایجاد کنید مقدار False را برمیگرداند. اگر فایل را ایجاد کنید، حتی اگر پس از آن فایل را دلیت کنید True برمیگرداند»


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

حالا راه حل چیه؟ همون تابع clearstatcach.
یعنی مثلا فایلی داری و توی اسکریپت چند بار با file_exists میخوای تست کنی که دلیت نشده باشه، اونوقت قبل از اجرای هر file_exists باید تابع clearstatcach رو فراخوانی کنی. البته از این روش فقط موقعی استفاده کن که امکان داره اون فایل ابتدا وجود داشته باشه اما بعدش (ظرف مدت کوتاهی) حذف بشه و اطلاع از این قضیه برات مهمه.

ضمنا خود فایل کش نمیشه. اطلاعات مربوط به فایل مثل وجود داشتنش، پرمیشن هاش و اینطور چیزها کش میشن.