Панель управления WordPress, просмотр результатов CPT в 504


10

Я создал пользовательский тип сообщения с пользовательской таксономией. У меня есть около 1500 постов, все из которых относятся к какому-то термину таксономии ... некоторым - более 200.

Я заметил, что на панели инструментов для просмотра пользовательских типов записей требуется очень много времени, в большинстве случаев это приводит к тайм-ауту шлюза 504.

Запрашивать эти посты из внешнего интерфейса просто отлично, и у меня нет проблем с этим.

Насколько я понимаю, когда приборная панель пытается просмотреть эти пользовательские типы сообщений, она пытается извлечь всю информацию, назначенную каждому сообщению, прежде чем она покажет все.

У меня есть этот набор для установки WP, который позволяет использовать столько памяти, сколько необходимо (memory_limit = -1), как я исследовал, некоторые говорили, что это может быть связано с памятью.

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

Ошибки после увеличения WP_MEMORY_LIMITс 1Gb до 2Gb:

WordPress database error: [MySQL client ran out of memory]
SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('locations') AND tr.object_id IN

WordPress database error: [Lost connection to MySQL server during query]
SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN

WordPress database error: [MySQL server has gone away]
SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM wp_posts WHERE post_type = 'services' ORDER BY post_date DESC

Кстати, я увеличил объем памяти моего сайта WordPress до 2 Гб, и это позволило мне увидеть сообщения, однако я получаю массу ошибок (добавлено в исходный вопрос). Можно ли что-нибудь сделать, чтобы запрос на бэкэнде не был таким тяжелым?
— NW Tech

Когда вы упоминаете о просмотре пользовательских типов постов на панели инструментов, вы имеете в виду просмотр списка постов, расположенных по адресу wp-admin/edit.php?post_type=services?
— Боско

@ Bosco Это правильно.
— NW Tech

Это огромная память, которую можно назначить для Wordpress. Вы используете виртуальный хостинг, VPS или выделенный сервер? Здесь могут быть более глубокие проблемы. Используете ли вы Apache или другой веб-сервер, такой как Nginx (возможно, оба)?
— Дуэйн Чаррингтон

Это новый сервер (DV) с MediaTemple. Панель управления - Plesk, а сервер работает под управлением CentOS с Apache и Nginx. Я не хочу выделять столько памяти, но это казалось единственным способом получить какие-либо результаты.
— NW Tech

Ответы:


4

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

add_action( 'pre_get_posts', 'nwtd_lpfs_custom_admin_query' );
function nwtd_lpfs_custom_admin_query( $query ) {
    if( !is_admin() && !$query->is_main_query() ) {
         return;
     }
     if( is_post_type_archive( 'services' ) ) {
          $query->set('no_found_rows', 1 );
          $query->set('update_post_meta_cache', 0 );
          $query->set('update_post_term_cache', 0 );
     }
}

На данный момент у меня более 700 постов, привязанных к 1500+ терминам таксономии, и все работает отлично. Сообщения появляются почти мгновенно.

** Я не писал этот код. Кто-то, с кем я работаю напрямую, кто не является членом сообщества WordPress Ответы, предоставил код - возможно, он может помочь кому-то другому, или кто-то другой может расширить его, чтобы сделать его более эффективным. **

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.