فهرست مقاله
سرعت، زندگی است؛ اگر یک وبسایت حتی کسری از ثانیه عقب باشد، کاربران برمیگردند و آن را ترک میکنند.
به همین دلیل است که HestiaCP بهینهسازی OPcache برای موفقیت یا شکست هر وبسایتی که به PHP متکی است، بسیار مهم است.
OPcache چیست؟
OPcache یک موتور ذخیرهسازی بایتکد داخلی در PHP است.
عملکرد آن ساده است: اسکریپت PHP کامپایل شده را در حافظه پنهان (cache) میکند و هنگام دسترسی مجدد به آن، به جای کامپایل مجدد، مستقیماً حافظه پنهان را فراخوانی میکند.
این کار سرعت پاسخگویی وبسایت را بهبود میبخشد، بار CPU را کاهش میدهد و فوراً فشار بر سرور را کم میکند.
طبق مستندات رسمی PHP:
«OPcache با کاهش زمان اجرا و جلوگیری از تکرار کامپایل اسکریپت، بهبودهای قابل توجهی در عملکرد ایجاد میکند.»
به طور خلاصه: OPcache یک شتابدهنده PHP است.
چرا باید OPcache را در HestiaCP بهینه کنیم؟

HestiaCP یک پنل کنترل سبک است که بسیاری از افراد برای مدیریت VPS یا سرورهای اختصاصی از آن استفاده میکنند.
OPcache به طور پیشفرض فعال است، اما پارامترها اغلب محافظهکارانه تنظیم میشوند.
بدون تنظیمات، بهبود عملکرد محدود خواهد بود.
مثلا:
در سروری با ۴ هسته و ۸ گیگابایت حافظه، حافظه پیشفرض OPcache فقط ۶۴ مگابایت است و تعداد فایلهای ذخیرهشده فقط ۴۰۰۰ عدد است.
این برای سایز متوسط است وردپرس برای یک وبسایت، این به سادگی کافی نیست.
نتیجه این است که حافظه پنهان دائماً پاک میشود و باعث میشود عملکرد به طور مکرر نوسان کند.
وضعیت فعلی OPcache را بررسی کنید
دستور زیر را اجرا کنید:
php -i | grep opcache.enable
نتایجی مشابه موارد زیر را مشاهده خواهید کرد:
- opcache.enable => روشن: این به این معنی است که OPcache در PHP-FPM فعال است.
- opcache.enable_cli => خاموش: در حالت خط فرمان فعال نیست.
- opcache.enable_file_override => خاموش: قابلیت لغو فایل فعال نیست.
این یعنی اگرچه OPcache در حال حاضر کار میکند، اما هنوز جای بهینهسازی وجود دارد.
ویرایش فایلهای پیکربندی PHP
در HestiaCP، مسیر فایل پیکربندی PHP معمولاً به صورت زیر است:
/etc/php/8.x/fpm/php.ini
برای فعال کردن حالت CLI:
/etc/php/8.x/cli/php.ini
بخش [opcache] را پیدا کنید و پارامترهای زیر را اضافه یا تغییر دهید:
[opcache] ; 启用 OPcache opcache.enable=1 opcache.enable_cli=1 ; 内存与缓存设置 opcache.memory_consumption=256 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000 ; 文件更新检测 opcache.validate_timestamps=0 opcache.revalidate_freq=60 ; 其他优化参数 opcache.save_comments=1 opcache.fast_shutdown=1 opcache.enable_file_override=1
جزئیات پارامترها و منطق بهینهسازی
مصرف حافظه عملیاتی = ۲۵۶
اختصاص ۲۵۶ مگابایت حافظه به OPcache برای وبسایتهای متوسط تا بزرگ مناسب است.
برای وبسایتهای کوچک، میتوانید آن را روی ۱۲۸ مگابایت تنظیم کنید.opcache.interned_strings_buffer=16
یک حافظه نهان رشتهای ۱۶ مگابایتی برای کاهش استفاده از رشتههای تکراری ارائه میدهد.فایل_های_شتاب_حداکثر_opcache=10000
حداکثر تعداد فایلهای ذخیره شده در محیط وردپرس + افزونه حداقل ۱۰۰۰۰ عدد توصیه میشود.opcache.revalidate_freq=60
فایلها هر ۶۰ ثانیه برای بهروزرسانی بررسی میشوند تا از ورودی/خروجیهای مکرر جلوگیری شود.فعالسازی opcache_cli=1
فعال کردن حافظه پنهان CLI برای اجرای ابزارهای خط فرمان مانند Artisan و WP-CLI مناسب است.opcache.enable_file_override=1
به OPcache اجازه دهید تا حافظه پنهان سیستم فایل را در اختیار بگیرد و دسترسی به دیسک را بیشتر کاهش دهد.- opcache.validate_timestamps=0
- غیرفعال کردن تشخیص بلادرنگکاهش ورودی/خروجی سیستم فایل و بهبود عملکرد.
با این حال، این بدان معناست که شما باید پس از تغییر فایلهای PHP، حافظه پنهان (cache) را به صورت دستی پاک کنید (سرویس PHP را مجدداً راهاندازی کنید).
پس از اعمال تغییرات، برای اعمال تغییرات، باید سرویس PHP را مجدداً راهاندازی کنید.
sudo systemctl restart php<版本>-fpmترکیب این پارامترها به وبسایت اجازه میدهد حتی تحت همزمانی بالا نیز پایدار بماند.
سرویس PHP-FPM را مجدداً راهاندازی کنید
پس از اعمال تغییرات، فراموش نکنید که سرویس را مجدداً راهاندازی کنید:
sudo systemctl restart php8.x-fpm
سپس دوباره آن را اجرا کنید:
php -i | grep opcache
بهروزرسانی پارامترها تأیید شده است.
بهترین شیوهها برای محیطهای تولید
در محیطهای عملیاتی، بهینهسازی OPcache چیزی بیش از تنظیم پارامترها را در بر میگیرد؛ این بهینهسازی شامل استراتژیهای زیر نیز میشود:
۱. پاک کردن حافظه پنهان (cache) در حین استقرار
پس از هر بهروزرسانی کد، OPcache باید پاک شود؛ در غیر این صورت، ممکن است نسخه قدیمیتری بارگذاری شود.
میتوانید موارد زیر را به اسکریپت CI/CD اضافه کنید:
<?php opcache_reset();
روش دیگر، اجرای آن در فرآیند استقرار است:
systemctl reload php8.x-fpm
۲. از تمیز کردن مکرر خودداری کنید
پاک کردن بیش از حد مکرر حافظه پنهان میتواند منجر به کاهش عملکرد شود.
توصیه میشود فقط زمانی که کد بهروزرسانی میشود، عملیات پاکسازی انجام شود، نه اینکه در فواصل منظم این کار را انجام دهید.
۳. میزان استفاده از OPcache را زیر نظر داشته باشید.
شما میتوانید میزان موفقیت در کش را به صورت آنی با استفاده از دستور `php -i | grep opcache` یا با نصب افزونه Opcache Control Panel بررسی کنید.
نرخ موفقیت بالای ۹۵٪ نشاندهنده پیکربندی معقول است.
طبق تستهای رسمی عملکرد Zend، فعال کردن OPcache میتواند سرعت اجرای اسکریپتهای PHP را تا ۳ برابر بهبود بخشد و میزان استفاده از CPU را تا ۵۰٪ کاهش دهد.
این نوعی نظریه عرفانی نیست؛ بلکه دادههای محکمی است.
نتیجهگیری: دیدگاهها و نقل قولهای کلیدی من
به نظر من، OPcache مانند یک "توربوشارژر" برای یک وب سایت است. بدون آن، PHP مانند ماشینی بدون توربوشارژر است که به آرامی کار می کند و سوخت را هدر می دهد.
بهینهسازی OPcache فقط یک جزئیات فنی نیست، بلکه یک انتخاب استراتژیک برای عملکرد وبسایت نیز هست.
زیرا سرعت برابر با نرخ تبدیل و عملکرد برابر با رقابتپذیری است.
نقل قول کلیدی: آینده یک وبسایت به میزان پیچیدگی کد آن بستگی ندارد، بلکه به سرعت پاسخگویی آن بستگی دارد، آنقدر سریع که کاربران حتی وقت پلک زدن هم ندارند.
بنابراین، اجازه ندهید سرورها منابع را در حلقههای ناکارآمد هدر دهند.
همین حالا OPcache مربوط به HestiaCP خود را بهینه کنید و وبسایت خود را به اوج برسانید.
آیا میخواهید یک الگوی پیکربندی OPcache با بهترین کیفیت برای محیط عملیاتی شما بنویسم که بتوانید مستقیماً آن را کپی کرده و در php.ini استفاده کنید؟
وبلاگ امید چن ویلیانگ ( https://www.chenweiliang.com/ مقاله "چگونه OPcache را در HestiaCP بهینه کنیم؟ ذخیره سازی Opcode و کامپایل کد PHP برای افزایش سرعت وب سایت شما" که در اینجا به اشتراک گذاشته شده است، ممکن است برای شما مفید باشد.
به اشتراک گذاری لینک این مقاله خوش آمدید:https://www.chenweiliang.com/cwl-34197.html
