web-dev-qa-db-fra.com

Tableau de bord WordPress, affichage des résultats CPT dans 504

J'ai créé un type d'article personnalisé avec une taxonomie personnalisée. J'ai environ 1500 postes qui sont tous affectés à une sorte de terme de taxonomie ... certains étant affectés à plus de 200 termes.

J'ai remarqué que, dans le tableau de bord, l'affichage des types de publication personnalisés prend beaucoup de temps, ce qui entraîne généralement un délai d'attente de la passerelle 504.

Interroger ces publications dès le départ est très bien et cela ne me pose aucun problème.

Si j'ai bien compris, lorsque le tableau de bord tente d'afficher ces types de publication personnalisés, il tente d'extraire toutes les informations attribuées à chaque publication avant de tout afficher.

J'ai ce WP ensemble d'installation pour pouvoir utiliser autant de mémoire que nécessaire (memory_limit = -1), comme je le recherchais, certains ont dit qu'il pourrait s'agir d'une mémoire liée.

Est-ce que je peux faire quelque chose pour augmenter les performances de cette requête ... peut-être pas charger toutes les relations de terme de taxonomie d'une publication jusqu'à ce que vous la modifiiez?

Erreurs après augmentation de WP_MEMORY_LIMIT de 1 Go à 2 Go:

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
10
NW Tech

Les termes CPT et taxonomie sont créés via un plugin. J'ai pu réduire la requête en ajoutant ce qui suit à mon plugin:

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 );
     }
}

À l'heure actuelle, j'ai plus de 700 postes liés à plus de 1500 termes de taxonomie et tout fonctionne très bien. Les messages apparaissent presque instantanément.

** Je n'ai pas écrit ce code. Quelqu'un avec qui je travaille directement, qui ne fait pas partie de la communauté WordPress Answers, a fourni le code - il peut peut-être aider quelqu'un d'autre ou peut-être que quelqu'un d'autre puisse l'étendre pour le rendre plus efficace. **

4
NW Tech