Я создаю сайт для фотографа, который загружает фотографии, обычно большие для современных цифровых камер. Изображения занимают достаточно много памяти, особенно такие операции с изображениями, как создание миниатюр.
Поэтому я хотел поднять ограничение памяти в админке выше 256 МБ - как это можно сделать? Я позволил CGI и PHP использовать до 1 гигабайта, но WordPress всегда уменьшает объем памяти до 256 МБ. Любая идея, как это исправить на стороне клиента, который должен иметь возможность автоматического обновления?
ОБНОВЛЕНИЕ: Начиная с Wordpress 3.2, максимальный предел памяти в Wordpress снова будет настраиваться .
customization
admin
memory
hakre
источник
источник
Ответы:
Теоретически, отредактируйте ваш config.php и добавьте эту строку перед включением wp-settings.php.
следует увеличить предел памяти для WordPress до 256 МБ или любого другого значения, которое вы установили. И это будет работать по всему миру. Однако, как указал sorich87 , есть несколько функций, которые изменят этот параметр с жестко заданным ограничением в 256 МБ.
Взломать или не взломать
Немного беспокойства по этому поводу,
WP_MEMORY_LIMIT
это одна из самых странных настроек WP, с которыми я сталкивался. если вы проверите,/wp-includes/default-constants.php
вы найдете этот параметр:Я никогда не понимаю, что WP установит так низкое использование памяти по умолчанию, пока не найду это в кодексе WP:
Это объяснение облегчало. Тем не менее, использование жестко запрограммированной
@ini_set('memory_limit', '256M');
функции WP каждый раз, когда требуется больше памяти, никогда не упоминается . На самом деле, я не нахожу объяснения этому смутному поведению из кодекса WP. Поскольку большинство функций, не связанных с пользователем, либо не документированы, либо четко не объяснены в Кодексе.Хотя этот параметр хорошо работает в большинстве случаев, он сделает эти функции бесполезными на сервере с более низким значением максимальной памяти или в вашем случае с более высоким использованием памяти.
Пока WP ребята не исправят это, я думаю, что ваше единственное решение - модифицировать ядро. Вы можете найти этот пост, написанный Хакре, интересным для чтения. Он также представляет рекомендации по исправлению в Trac. Предыдущая ссылка на файл исправления может помочь вам найти список функций, которые используют этот параметр.
редактировать:
это самый глупый ответ, который я когда-либо давал, потому что я даю ссылку на ваш собственный пост (просто поймите, что ОП имя было хакре через 2 дня): D
редактировать 2:
как уже упоминалось в комментарии, это было исправлено выпуском 3.2
источник
Есть
@ini_set('memory_limit', '256M');
до загрузки изображения в памяти функций GD.imagecreatefromstring()
(строка 253, wp-includes / media.php), с помощьюwp_load_image()
которой используетсяimage_resize
(функция, в которой выполняется обработка изображений для создания миниатюр). Ограничение памяти находится в строке 252, поэтому, насколько я понимаю, нет способа изменить его без убийства котенка *> :).Также есть функции GD
load_image_to_edit()
(строка 200, wp-admin / includes / image-edit.php). Этот используется графическим редактором (я никогда не использовал его, так как я знаю WordPress, даже не знал, где его найти :)). Если ваш клиент использует его, вы можете также установить ограничение памяти. Есть фильтрload_image_to_edit_path
.Надеюсь, мой ответ полезен.
* взлом ядра
источник
WP_MEMORY_LIMIT
константа и дажеadmin_memory_limit
фильтр, но ни в одном из этих случаев не учитываются.Swill - у меня были такие же проблемы. Черт возьми WordPress с некоторыми «функциями». Более сложный подход состоит в том, чтобы изменить все @ini_set, чтобы установить его из WP_MEMORY_LIMIT - проблема решена
Кроме того, изменение значений php во время выполнения не так уж умно, не уверен, почему это реализовано :(
источник
По вашему описанию, я думаю, что этот код
admin.php
является проблемой:Несколько странно, что он рассматривает использование памяти администратора отдельно, но, по крайней мере, фильтруется.
источник
Я просто хотел сказать спасибо bangbambang. Это первый пост, который я обнаружил, который смог дать мне некоторое представление о том, почему вход в wp-config.php
define('WP_MEMORY_LIMIT', '512M');
фактически не использовался. Я часами пытался понять это ...Мой импорт не удался с исчерпанной проблемой 256M независимо от того, как я установил лимит памяти.
Вот места, где предел памяти жестко закодирован до 256M (в любом случае в версии 3.0.5).
источник
WP_MAX_MEMORY_LIMIT
.источник