Інформаційна панель 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

FWIW, я збільшив пам’ять свого сайту WordPress до 2Gb, і це дозволило мені бачити публікації, проте я отримую ряд помилок (додано до оригінального запитання). Чи можна зробити щось, щоб зробити запит на задній частині не таким важким?
NW Tech

Коли ви згадуєте перегляд користувацьких типів публікацій на інформаційній панелі, ви маєте на увазі перегляд списку публікацій, розміщених на wp-admin/edit.php?post_type=services?
bosco

@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.