Панель управления 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
NW Tech
источник
Кстати, я увеличил объем памяти моего сайта 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 Ответы, предоставил код - возможно, он может помочь кому-то другому, или кто-то другой может расширить его, чтобы сделать его более эффективным. **

NW Tech
источник