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