Я использую WordPress. И я добавил более 20 000 категорий товаров, но теперь страница, на которой я показываю все категории, недоступна и недоступна.
Даже в бэкэнде — после некоторого количества категорий я не вижу отдыха. И я вижу следующие ошибки:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 262144
bytes) in /wp-admin/includes/class-wp-terms-list-table.php on line 273
Maximum execution time of 30 seconds exceeded in class-wp-terms-list-table.php on line 273
PHP Fatal error: Maximum execution time of 30 seconds exceeded in
/wp-includes/taxonomy.php on line 0
Я попытался увеличить настройки php.ini до этих:
memory_limit = 1024M
max_execution_time = 3000
Но не повезло. В чем может быть проблема? Я что-то пропустил?
Вот это да. Это много! С точки зрения WordPress вы медленно убиваете свой сервер.
Я бы предложил несколько вещей.
Переход на автономный сервер (линод / цифровой океан) прямо сейчас предоставляет хорошие решения за разумную сумму денег.
В связи с реализацией кэширования, я бы также предложил кэш памяти, такой как memcached или redis, реализация для обоих существует в каталоге wordpress.org/plugins.
Поднятие лимина памяти в области WordPress осуществляется следующим образом. Вам нужно определить объем памяти, который вы хотите использовать в вашем wp-config.php. например
define (‘WP_MEMORY_LIMIT’, ‘512M’);
ограничение по времени может быть сделано следующим образом (также в wp-config), но я бы посоветовал исправить ошибку иным способом (добавочный кеш)
@ini_set (‘max_execution_time’, 0);
@set_time_limit (0);
Также рассмотрите способ изменения вашей таксономии на теги (если она не требует иерархии) и используйте обычный способ просмотра ваших категорий. Например, получение списка категорий в WordPress вызывает три таблицы (объединения и т. Д.).
Другим способом решения проблемы может быть изменение SQL с помощью фильтра WordPress (но в случае с get_terms это немного сложно реализовать чистым способом WordPress)
Попробуйте получить категории с помощью чистого SQL-запроса (вместо функции wordpress, такой как get_terms).