PHP модул – OPcache

OPcache е PHP ускорител, който прилага opcode кеширане и оптимизиране, чрез което ускорява процеса по обработка на PHP скриптовете.

Вижте какво означава opcode кеширане в статията: 🔗 Ускоряване на PHP приложения чрез opcode кеширане | Help

OPcache ускорява генерирането на HTML кода, което се отразява в ускорено зареждане на сайта.

OPcache е модул за PHP, който записва в паметта на системата резултатите от компилирането на PHP кода (байткода). При следващо изпълнение на същия PHP скрипт, PHP интерпретаторът взима байткода директно от паметта и го изпълнява. По този начин се спестява процесорен ресурс и време, като се прескачат стъпките по четенето и компилирането на първичния PHP код.

OPcache е добавен към ядрото на PHP във версия PHP 5.5. Този модул е заместител на остарелите PHP модули като APC (Alternative PHP Cache) и eAccelerator. За PHP версия 5.5 и следващи (PHP 7.x, 8.x) се препоръчва активирането му.

APC и eAccelerator са изоставени от разработка и поддръжка проекти. Възможно е да се използват за PHP версии преди 5.5.

Оптимално ускоряване с OPcache може да се получи, когато за сайта е активирана нова версия на PHP (7.x, 8.x).

OPcache се поддържа при СуперХостинг.БГ на всички сървъри за споделен хостинг и Managed VPS. OPcache може да се активира или деактивира през cPanel » PHP Manager.

Бележка: Технологиите за кеширане на байткод като OPcache и технологиите за кеширане на данни като Memcached и Redis имат различна цел и са независими едни от други. OPcache ускорява достъпа до кода и изпълнението му, докато Memcached и Redis ускоряват достъпа до данните (page cache, database cache, object cache). Двата вида кеширане може да работят едновременно и дори се препоръчва да се активират, за да се ускори зареждането на сайта.

Как се активира и деактивира OPcache?

Активирането и деактивирането на OPcache в хостинг акаунт при СуперХостинг.БГ се извършва през контролния панел cPanel и инструмента PHP Manager by SuperHostingУправление на PHP модули.

Активиране на OPcache в cPanel - PHP Manager.
Активиране на OPcache в cPanel – PHP Manager.

🔗 Как се активира PHP модул в хостинг акаунта? | Help

Как се използва OPcache в сайта?

Ако сайтът е написан на PHP и OPcache е активиран през PHP Manager в cPanel, OPcache се използва автоматично от PHP интерпретатора. Не са нужни модификации на кода или настройките на приложението.

OPcache статус и параметри

С phpinfo можете да проверите статуса на OPcache и параметрите, с които работи.

OPcache е стартиран успешно и работи, има 984 хита към кеша и 208 кеширани скрипта.
OPcache е стартиран успешно и работи, има 984 хита към кеша и 208 кеширани скрипта.
Параметри на OPcache.
Параметри на OPcache.

Промяна на параметрите на OPcache

Промяна на параметрите на OPcache може да се извърши в ini файла за модулите, който е активен за използваната PHP версия. Например ако за хостинг акаунта сте активирали PHP версия 7.1 през PHP Manager, ini файлът php71.ini ще се намира в директория:

/home/cpuser/.sh.phpmanager/php71.d/

cpuser – заменете с потребителя за cpanel;
php71 – заменете с версията на PHP, която е активирана за акаунта/директорията, например php73;

След като извършите промени по директивите в този файл, за да влязат в сила новите стойности, може да рестартирате PHP процесите през cPanel » Process Manager by SuperHosting » Спиране на всички PHP процеси.

Важно: Не спирайте текущите PHP процеси на реалния сайт, задължително това трябва да се извършва на тестово копие на сайта. Рестартирането на PHP процесите на реален работещ сайт може да доведе до загуба на информация. Например ако посетител в момента има сесия и извършва поръчка на сайта, данните му може да се загубят и поръчката да се преустанови.

Параметри и настройки на OPcache: Runtime Configuration.

Съобщения за грешка с OPcache

При работата на OPcache с някои приложения, е възможно да се получат съобщения за грешка или некоректно функциониране на сайта.

Важно: Промяна в настройките на OPcache, активирането и деактивирането му, е препоръчително да се извършва на тестово копие на сайта. Не извършвайте промени директно в настройките на реалния сайт, тъй като това може да доведе да загуба на информация или да причини некоректна работа на сайта.

За да установите на тестовото копие на сайта, дали некоректното му функциониране е причинено от OPcache, може да деактивирате модула през PHP Manager. След това извършете тестове и проверки на работата на сайта. Ако след деактивиране на модула, не се забелязва некоректна работа на сайта, това е индикатор, че причината може да е в OPcache и зададените му параметри. Това ще наложи по-задълбочена проверка на зададените параметри за OPcache и несъвместимостта им с работата на приложението. Тази проверка е нужно да се извърши от лицето, което отговаря за поддръжката и разработката на сайта.

В много редки случаи е възможно зададената памет за OPcache да не е достатъчна. Може да проверете параметъра:

opcache.memory_consumption = 64

Важно: Оптималната памет за OPcache е 64 или 128, в много редки случаи е нужно да се зададе повече памет. Не задавайте прекалено голяма стойност за този параметър (над 128), защото това ще доведе до изчерпване на паметта за хостинг акаунта и всички приложения в него няма да могат да функционират.

Ако правите промени по PHP файловете и не виждате промените веднага, може да проверите следните два параметъра:

opcache.validate_timestamps = 1
opcache.revalidate_freq = 0

opcache.validate_timestamps – Когато тази опция е активирана (1) OPcache ще обновява кеша при засечена промяна в даден файл. Когато скриптът е наличен в кеша, OPcache ще извърши проверка на реалния файл и ако има промяна ще подмени записаната информация за него в кеша. Важно е да се отбележи, че подмяната с прясна и актуална информация ще се извърши след зададения период в следващата опция на OPcache (opcache.revalidate_freq).

opcache.revalidate_freq – Когато за тази опция е зададена стойност 0, това означава, че OPcache ще подмени кешираната информация за файла веднага, след като установи, че има промяна в оригиналния файл (opcache.validate_timestamps = 1). Ако зададете стойност 300 например, до 5 минути, след като OPcache е установил, че има промяна в оригиналния файл, информацията в кеша ще се опресни. Препоръчително е, когато извършвате промени по PHP файловете на сайта, да поставите стойност 0 на тази опция.

OPcache и грешка 500 (Internal Server Error)

При активиран OPcache при някои приложения като PrestaShop версии 1.7.4.3, 1.7.5.1 може да се получи съобщение за грешка или Error 500 при изчистване на кеша или други действия в сайта/администрацията.

Може да опитате да спрете получаването на грешката, като се уверите, че следните параметри са зададени в конфигурацията на OPcache:

opcache.validate_timestamps = 1
opcache.revalidate_freq = 0
opcache.fast_shutdown = 0

Ако след промяна на параметрите, съобщението за грешка продължи да се получава, ще е нужна допълнителна проверка на казуса.

Обновена: 19.10.2021

Беше ли Ви полезна тази статия?

Вижте още