Един от основните параметри при работата с WordPress е лимитът на PHP паметта, който помага на плъгините и скриптовете да работят коректно.
Много често скриптовете и плъгините не успяват да се заредят, заради количеството заделена памет, което води до фатална грешка на сайта.
В тази статия ще разгледаме няколко метода как бързо и лесно да увеличим лимита на PHP паметта в WordPress, така че да покрие нуждите на плъгините и скриптовете на нашият сайт и да избегнем грешки. Кои са методите, разберете като прочетете статията.
Как да познаем грешка свързана с лимита на паметта?
Обикновено в грешката се посочва, че няма достатъчно алокирана памет и изглежда в следният вид:
“Fatal error: Allowed memory size of xxxxxx bytes exhausted”.
Ще разгледаме няколко теми и метода за промяна на този параметър както следва:
- Какво представлява PHP Memory Limit във WordPress?
- Защо WordPress се нуждае от увеличаването на този параметър?
- Методи за увеличаване на Memory Limit параметъра:
- Чрез добавяне на директиви във wp-config.php файла
- Използване на WordPress Command Line Interpreter (WP CLI) за увеличаване на лимита
- Чрез промяна през PHP Selector полето на cPanel
- Чрез директива във .htaccess файла - Чрез плъгина WP Tools
Какво представлява PHP Memory Limit във WordPress?
PHP е скриптов език върху сървърната страна. Той е език с отворен код, който е проектиран за уеб програмиране и е широко използван за създаване на сървърни приложения и динамично уеб-съдържание. Той генерира HTML страниците на Вашият сайт. Това е мощен програмен език, който може да извършва множество операции, като изчисления, да изпълнява процеси и заявки от WordPress приложението, но за тази цел се нуждае от налично количество памет за изпълнението на тези операции.
По подразбираме ограничението на паметта за WordPress е 32 МБ , но има опция за увеличение на този лимит. За да работи с WooCommerce например за WordPress се препоръчва да използва поне 64 МБ.
Когато WordPress достигне лимита на памет по подразбиране, той ще се опита да увеличи използваната памет до 40 МБ за единичен сайт и 64 МБ за мултисайт инсталация. Ако обаче не е заделена достатъчно памет, WordPress ще покаже фатална грешка на сайта:
“Fatal error: Allowed memory size of xxxxxx bytes exhausted”.
Ако можем да изберем препоръчителна стойност, то това са 128 МБ за memory limit. Тази стойност е напълно достатъчна за работата на ядрото на WordPress. Единствената причина да не е достатъчна тази памет е някой от плъгините да изискват повече. От самите процеси няма как да се установи колко точно памет е необходима на даден плъгин да работи. За да следите този параметър, можете да използвате Server IP & Memory Usage Display, който дава пълна информация.
Този плъгин добавя полезна лента с информация в административният панел, като показва активните плъгини колко памет заемат и какъв лимит е зададен за използване от WP приложението:
Така бързо и лесно можете да следите какво се случва с оперативната памет и плъгините, които използвате, като ги спрете и пускате последователно. Така ще видите кой от тях, колко памет консумира. Плъгинът предоставя и допълнителна информация като активната версия на PHP, IP адреса на сървъра и др.
Защо WordPress се нуждае от увеличаването на този параметър?
Основните процеси, които изискват голям ресурс са оптимизационните процеси в WordPress, особенно работата с медиини файлове. Като пример, можем да посочим например необходимостта за създаване на различни thumbnails от една стандартна снимка (например WooCommerce създава множество размери на основна снимка, за да могат да се използват в различни панели и плъгини). Този процес освен процесорна мощност изисква и достатъчно налична заделена памет за обработка на дадена снимка. Много е важно да знаем, че когато сме посочили висока стойност за PHP лимит за паметта, това означава, че за всеки процес, който ще се отвори, ще се резервира посоченият лимит памет. При висока стойност много бързо може да се изчерпа заделената памет за хостинг плана. Друг случай, който изчерпва много бързо лимита на наличната памет е например импортирането на продукти в WooCommerce магазина. Това е така, защото се извършват много и едновременни заявки към базата данни, за да се въведе автоматично даден продукт в магазина и данните за него. Затова е важно при избора на хостинг план, да обърнем специално внимание на заделената RAM памет за даден план, тъй като тя ще играе съществена роля при работата на Вашето WordPress приложение.
Методи за увеличаване на Memory Limit параметъра.
Тук ще разгледаме няколко бързи и лесни начина да увеличите лимита на PHP паметта, като всеки от тях е релевантен и е изцяло Ваша преценката, кой от методите да използвате за съответната промяна.
МЕТОД 1: Чрез добавяне на директиви във wp-config.php файла
Този метод работи директно с WordPress платформата и нейните конфигурационни файлове, като се добави стандартна WP директива във wp-config.php. За да редактирате файла, можете да използвате файловият мениджър на cPanel или друг удобен текстов редактор.
Изберете директорията на инсталацията и натиснете с десен бутон върху wp-config.php:
Изберете опцията Edit, за да можете да редактирате файла:
Намерете реда, на който е записано следното:
/* Add any custom values between this line and the "stop editing" line. */
Веднага под него добавете директивата за увеличаване лимита на паметта, която има следният примерен вид:
define('WP_MEMORY_LIMIT', '32M');
Заменете цифрата с желаната от Вас стойност. Имайте предвид, че 128М заделена памет са напълно достатъчни за работата на повечето плъгини. Стойността не може да надвишава паметта, която е зададена като лимит за хостинг плана.
За да се убедим, че стойността е променена, можем да използваме инструмента от Dashboard-a SiteHealth.
Изберете Info таб-а и след това отворете прозореца WordPress constants.
Тук ясно се вижда, че WP_MEMORY_LIMIT е вече 128М и е променен. Другата константа WP_MAX_MEMORY_LIMIT показва максималната стойност на заделената памет ( в случая 256М) и тя е равна на PHP MEMORY LIMIT.
ВАЖНО: Увеличаването на PHP лимита на паметта, не увеличава автоматично заделената памет, с която работи WordPress. По подразбиране тя е 40М и е препоръчително да бъде вдигната до лимита.
Максималния лимит при плановете ни на услугата “Споделен Хостинг” е 1024М.
Важно е да отбележим преди да направите промени по файла, да запазите архив на текущият файл, за да може при необходимост да се възстанови.
МЕТОД 2: Използване на WordPress Command Line Interpreter (WP-CLI) за увеличаване на лимита
Ако разполагате със SSH достъп до хостинг плана си, можете да промените лимитът на паметта като използвате команда от командния ред. След като се логнете, влезте в директорията на домейна и изпълнете следната команда от командният ред:
wp config set WP_MEMORY_LIMIT 256M
Тя ще добави във wp-config.php файла, директивата, която разгледахме в метод 1. Можете да промените стойността, като е задължително тя да не надминава максималната за хостинг плана.
След изпълнението на командата, ще получите следното съобщение:
Success: Updated the constant 'WP_MEMORY_LIMIT' in the 'wp-config.php' file with the value '256M'.
МЕТОД 3: Чрез промяна през PHP Selector полето на cPanel
Този метод е пряко свързан с първите два, защото той определя глобалният лимит на паметта. Ще Ви покажем как можете да промените този параметър през Вашият cPanel.
Изберете полето Select PHP Version в раздел Software и го отворете:
Изберете таб-а Options и изберете от падащото поле версията на PHP, за която ще промените лимита:
Намерете в таблицата променливата memory_limit и й задайте желаната от Вас стойност:
Новата стойност е зададена. Имайте предвид, че това е паметта, която се заделя за отваряне на един PHP процес и препоръчваме стойността да е по-малка от 1024М.
МЕТОД 4: Чрез директива във .htaccess файла
Този файл е изключително важен за конфигурирането на уеб сървъра. Чрез него и директивите записани в него можем директно да управляваме уеб сървъра, без да е необходимо да променяме неговите конфигурационни файлове. Така можем също така и през него да контролираме PHP параметрите. Тук ще разгледаме как можем да променим memory_limit директивата чрез него.
Всеки сайт може да има свой собствен .htaccess файл, който е разположен в работната папка на домейна. Името на файла започва с точка, защото е системен и обикновено е скрит за потребителите (по подразбиране тези файлове не се виждат във FileManager). За да ги направите видими отворете FileManager от cPanel и изберете Settings.
Поставете отметка на Show Hidden Files (Folders). Така ще можете да видите всички системни файлове и папки, които започват с точка.
Изберете .htaccess файла в работната директория на домейна и натиснете десен бутон върху него, след което използвайте опцията Edit:
Ако в работната директория на домейна няма .htaccess тогава го създайте. След като отворите режим на редакция добавете следният ред в края на файла:
php_value memory_limit 256M
Можете да промените стойността на желаната от Вас като би следвало файлът да изглежда примерно така:
Важна информация: .htaccess файла работи на рекурсивен принцип, т.е. ако в работната директория на домейна няма такъв файл, то директивите се вземат от директорията от горното ниво. Ето и пример за структурата:
Домейнът ни има пълен път на работна директория /home/cpaneluser/public_html/
В тази директория няма създаден файл .htaccess, но такъв има в главната директория за хостинга /home/cpaneluser/ . В този случай, всички правила записани в /home/cpaneluser/ .htaccess ще бъдат валидни и за /home/cpaneluser/public_html/, тъй като public_html се явява поддиректория на /home/cpaneluser/ и наследява директивите от файла, включително и memory_limit, ако е зададен. Ако създадем /home/cpaneluser/public_html/.htaccess файла, то валидните директиви ще трябва да бъдат променени в него и те ще са актуални само за домейн името. Останалите поддиректории ще наследят директивите от .htaccess в главната директория на хостинга /home/cpaneluser/.
МЕТОД 5: Чрез плъгина WP Tools
WordPress платформата предлага много плъгини, чрез които можете да увеличите лимита на паметта на Вашият сайт. В този метод ще разгледаме един такъв плъгин - WP Tools и няколко бързи стъпки как да променим лимита на паметта.
Разбира се, необходимо е да инсталираме плъгина и да го активираме:
След като се активира, той ще е достъпен в Административния панел за управление на сайта в таб WP Tools:
За да редактирате паметта, трябва да изберете Settings полето:
Изберете таб General Settings и намерете опцията за промяна на лимита на паметта. От падащото меню, имате опция да увеличите лимита на WordPress паметта до максималната, която е настроена през PHP лимита:
Обърнете внимание, че по подразбиране, ако паметта не е увеличена, както разяснихме в метод 1, тя ще бъде 40М и това ще предизвиква постоянно проблеми с работата на плъгините. След като промените стойността, натиснете бутона Save Changes.
След промяната, вече виждаме, че стойността е станала 128М:
Разбира се, WordPress платформата предлага и много други плъгини, с които лесно и бързо можете да конфигурирате лимитите на паметта.
Как можем да Ви съдействаме, ако Вашият сайт изпитва затруднения с лимитите на паметта?
Много е важно планът, който сте избрали за Вас да бъде съобразен с Вашето WordPress приложение. Ако Вашата страница е обикновен блог или информативен сайт, то ние сме Ви подготвили Блогър планове, които са разчетени да покриват всички технически характеристики. Оптимизирани са предимно процесорната мощност и паметта на хостинг плана, като всеки план надгражда предишният с допълнителна системна мощност. Разбира се, онлайн магазините, които ползват WooCommerce и допълнително солидно количество плъгини изискват и по-високи системни ресурси. Нашите Онлайн планове са съобразени с нуждите на Вашият магазин и са оптимизирани да използват значително по-големи ресурси, особено по отношение на системната памет, спрямо стандартните хостинг планове. И тук всеки следващ план надгражда предишният, особено в параметъра памет, като осигурява добра производителност на магазини с минимум 10 активни плъгина + WooCommerce.
За да можем да анализираме изцяло нуждите на Вашето приложение, нашият екип от професионалисти предлага и планове за WordPress поддръжка, които включват множество допълнителни дейности, които предлагаме, за да решим Вашият казус. Сред основните дейности на нашите планове за поддръжка са: поддържане на сайтовете в максимално обновен вид, изготвяне на обстоен одит на сайта, който изследва всяка заявка и всеки процес, който се генерира от Вашето приложение, системен мониторинг и оптимизация на приложенията и др. Всички тези елементи са насочени за подобряване работата на Вашето приложение.
Какъв е оптималният лимит на паметта за Вашият сайт?
На този въпрос за съжаление, няма как да се даде еднозначен отговор, тъй като всеки сайт е специфичен за себе си и много зависи дали е информативен сайт или онлайн магазин и какво е точно неговото приложение. Съществено влияние оказва както хостинг плана, който сте избрали, така и трафика към сайта, обхождането от ботове, връзки с външни платформи. Всеки един от тези елементи може пиково да консумира максимално количество от заделената памет. Но все пак, ако можем да обобщим някаква средна стойност, то лимитът на паметта от 256М би следвало да е достатъчен за работата на Вашият WordPress сайт, който работи с лека тема и примерен брой от 15 плъгина.
Препоръчително е за онлайн магазините, които използват WooCommerce и съответно серия от плъгини за анализ (SEO, Google Analytics и др.) лимитът на паметта да бъде 512М може би и повече, като не се препоръчва обаче лимитът да надвишава 1024М, тъй като вече всеки отворен процес на WordPress ще резервира 1024М и това ще доведе много бързо до достигане на лимита на хостинг плана.
Заключение
Увеличаването на лимита на паметта за WordPress сайтовете е един от сигурните начини за оптимизиране работата на приложението. Показахме Ви няколко бързи и лесни метода за промяна на този параметър. Винаги е по-добре да бъде заделена повече памет, за да се избегне генерирането на неприятна грешка в критичен момент. Разбира се, винаги можете да разчитате на нашата техническа поддръжка 24/7, за да направим Вашето приложение атрактивно за потребителите.
*Използвани са материали от Интернет и WordPress общността.