WordPress извлекает метаданные для всех пользовательских типов записей в виде списка

9

У меня проблема в WordPress, где умирает PHP. Я увеличил объем памяти, но процесс PHP переходит на 100% загрузку процессора, затем умирает, и Apache выдает ошибку 500.

Я пытался заставить Apache что-то регистрировать, или PHP / MySQL, чтобы регистрировать ошибку, но ничего не регистрируется, кроме общей ошибки 500.

Проблема 500 находится на странице списка, например:

/wp-admin/edit.php?post_type=artist

В настоящее время у нас есть более 1200 исполнителей в WordPress, если я добавлю сортировку по дате:

/wp-admin/edit.php?post_type=artist&orderby=date

Тогда список загружается нормально, даже быстро! Я сидел и смотрел журнал запросов MySQL, и кажется, что WordPress загружает метаданные для каждого отдельного поста (все 1200 из них), чтобы получить список из 10 или около того. Только для одного из запросов это возвращает 92000 строк. Я использую расширенные настраиваемые поля и шаблон с собственной структурой, поэтому к каждому сообщению прилагается немало метаданных. Я думаю, что это слишком много данных для обработки PHP, и я сейчас нахожу потолок. 1200 постов, вероятно, удвоятся в течение следующего года.

Как можно заставить начальную загрузку страницы добавить сортировку по дате или исправить проблему с загрузкой всех этих метаданных?

Пол Каллен
источник
Вы пробовали отключить ACF и другие плагины? Я думаю, что у меня когда-то была похожая проблема, и я думаю, что виновник здесь не сам WP, а с ACF. например, ACF добавляет метаданные в ревизии, а затем загружает все это тоже. Пожалуйста, убедитесь, что является источником этой проблемы, поскольку она поможет другим людям, помогающим вам.
kraftner
Эй, @kraftner, я отключил ACF, и это не имело никакого значения.
Пол Каллен
Сколько памяти вы используете в wp-config (WP_MAX_MEMORY_LIMIT)? Каково ваше значение PHP.INI для memory_limit? Попробуйте поднять их до максимума. Кроме того, я бы взглянул на ваш файл конфигурации mysql.
Эмануэль Роша Коста
Я поднял PHP и WP_MAX_MEMORY_LIMIT до 512 временно безрезультатно. Мой файл конфигурации mysql: default-storage-engine=MyISAM innodb_file_per_table=1 max_allowed_packet=268435456 open_files_limit=10000 query_cache_size=64M log_slow_queries = 1 log-slow-queries=/var/log/mysql.slow.log log-error=/var/log/mysqld.log general_log_file = /var/log/mysql_general.log
Пол Каллен
1
Является ли пользовательский тип поста "художник" иерархическим (как страницы)? .. если это так, то это может быть причиной, поскольку все сообщения будут запрашиваться на панели администратора. Если ваше приложение позволяет, вы можете попробовать изменить иерархическое на ложное для CPT «Artist» и посмотреть, облегчает ли это проблемы с памятью
locomo

Ответы:

1

Попробуйте изменить иерархию: false в определении CPT (если ваше приложение позволяет).

Когда CPT установлены в иерархический режим: true, все сообщения будут запрашиваться на панели администратора, что может вызвать проблемы с памятью.

locomo
источник
0

Проблема заключалась в том, что CPT был установлен на иерархический, переключив его на иерархический: false в functions.php решил проблему.

Пол Каллен
источник
1
Пожалуйста, примите ваш собственный ответ, чтобы этот вопрос мог быть закрыт.
cjbj