• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
توضیحاتی راجب OpCache
#1
توضیحاتی درباره اکستنشن OpCache:

اگر در فایل php.ini تنظیم opcache.validate_timestamps فعال و به تنظیم opcache.revalidate_freq هم مقدار داده بشه، درصورت تغییر فایلهای PHP تون، سیستم OpCache اونهارو تازه (invalidate) قلمداد میکنه و کش قدیمی مربوط به اون فایلهای تغییر یافته رو در قسمت shared memory حافظه(shm)، کهنه علامت گذاری میکنه.

Exclamation اما متاسفانه سیستم OpCache کشهای کهنه(invalid) رو از حافظه shared memory تخلیه نمیکنه و فقط اونهارو wasted(تلف شده) علامت گذاری میکنه! و تنها زمانی که سیستم OpCache ریستارت بشه به میزان تنظیم opcache.memory_consumption حافظه shared memory تخلیه میشه، اون هم به 3 شرط: تجاوز از مقدار opcache.max_accelerated_files || مقدار opcache.memory_consumption && رسیدن به مقدار opcache.max_wasted_percentage. (به|| && دقت کنید)

هنگامی که کش wasted در حافظه به بیش از حد مجاز(opcache.max_wasted_percentage) برسه، OpCache خودکار ریستارت میشه، حافظه shared memory قفل میشه، segment کامل تخلیه میشه و نهایتاً قفل باز میشه. در این حالت وب سرور بکمک پروسس PHP بشدت مشغول تولید OpCode و cache کردن میشه تا حدی که پرفورمنس سرور افت میکنه یا حتی لحظاتی از دسترس خارج میشه و گاهاً cache slam رو بوجود میاره.

Idea بنابراین باید طوری OpCache رو تنظیم کنید و فایلهای PHP رو تغییر بدید که هرگز ظرفیت shared memory تون پر نشه... (مثلاً هنگام آپدیت کدها وب سرور رو خاموش کنید، از تابع opcache_reset() استفاده کنید یا کدهارو باهم و یکجا آپدیت کنید و...)

نکته: عمل allocation فضای کش در shared memory هنگامی انجام میشه که موتور PHP شروع به کار میکنه، پس اکستنشن OpCache سریعاً به میزان تنظیم opcache.memory_consumption فضایی رو در قسمت shared memory سیستم عامل رزرو میکنه(به مگابایت).
نکته 2: اکستنشن OpCache بهتره برای سرور واقعی(محیط production) استفاده بشه و نه محیط برنامه نویسی/development.
نکته 3: در حال حاضر کاملترین و قوی ترین سیستم cache اکستنشن opcache هستش که هم optimization و هم caching رو فراهم میکنه.
توجه: اگر از وبسرور IIS استفاده می کنید بهتره از اکستنشن WinCache استفاده کنید و نه OpCache.

[عکس: opcache-shared-memory.png]
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط : Reza undefined Alaa Null fmyi mohammadmm5400


پرش به انجمن:


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