talgalili
  • 0
Эксперт

Можете ли вы ограничить использование памяти определенным плагином?

  • 0

Я знаю, что можно ограничить (или расширить) использование памяти всего сайта WP, используя:

define('WP_MEMORY_LIMIT', '64M')

Можно ли сделать то же самое только для одного плагина, который использует веб-сайт?

Share
  1. Нет, и даже если бы вы могли, если бы плагину не хватило доступной памяти, то генерация всей страницы остановилась бы из-за фатальной ошибки.

    Вам лучше исправить сам плагин, чтобы он не использовал столько памяти, или просто еще больше увеличил общую память, выделенную для WordPress/PHP.

    • 0
    • Что вы имеете в виду, когда говорите, что WP_MEMORY_LIMIT перезаписывается? Поскольку это константа, ее значение не может измениться после того, как оно установлено. wp_initial_constants() устанавливает значение только в том случае, если оно еще не было установлено в wp-config.php.

      • 0
    • @Ian Dunn: Конечно, константа не перезаписывается, но значение, которое она несет, будет получено до того, как оно будет применено к вызову ограничения памяти. По крайней мере, это было улучшено некоторое время назад в транке, я думаю, что WP 3.2 выигрывает от этих изменений.

      • 0
  2. Вообще говоря, нет, это невозможно только для конкретного плагина. Плагин работает во всем PHP-процессе wordpress (обычно) и, следовательно, разделяет настройку ограничения памяти с остальными.

    Однако вы можете попытаться ограничить память перед каждым вызовом плагина. Это будет до любого его хука (это возможно), а затем в начале до включения (это гораздо сложнее достичь).

    Между прочим, определение of WP_MEMORY_LIMIT перезаписывается, поэтому установка этой константы на что-то бесполезна, если вы действительно хотите ограничить память.

    Если вы не боитесь иметь дело с внутренностями системы, вы можете ограничить память для всего процесса должным образом, а если вам нравится эксперимент, вы можете попробовать runkit и выполнить код плагинов в нем — как-нибудь.

    • 0

Оставить ответ

You must login to add an answer.