Cum să crești numărul de articole afișate de o taxonomie ierarhică? (EROARE HTTP 500)

12 aug. 2019, 17:19:27
Vizualizări: 42
Voturi: 0

Am primit EROARE HTTP 500 când am încercat să obțin toate articolele dintr-o taxonomie ierarhică care este categoria. EROARE HTTP 500

Am o pagină și în această pagină vreau să afișez toate articolele. Această pagină și acele articole au aceeași categorie numită de ex. hello.

În pagină am folosit următoarea interogare pentru a afișa articolele din categoria pe care o are această pagină.

<div class="box">
                            <?php
                                $category = get_the_category();
                                if($category->category_parent > 0){
                                    echo $category[0]->cat_name;
                                }
                                
                                $args = array(
                                    'post_type' => 'post',
                                    'tax_query' => array(
                                        'relation' => 'AND',
                                        array(
                                            'taxonomy' => 'category',
                                            'field'    => 'slug',
                                            'terms'    => array( $category[0]->cat_name ),
                                        ),
                                        array(
                                            'taxonomy' => 'post_format',
                                            'field'    => 'slug',
                                            'terms'    => array( 'post-format-video' ),
                                        ),
                                    ),
                                    'order'   => 'ASC',
                                    'nopaging' => true,
                                );
                                
                                $the_query = new WP_Query( $args );
                                
                                while ( $the_query->have_posts() ) {
                                        $the_query->the_post();?>
                                        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><h3><?php the_title(); ?></h3></a>
                                <?php  }
                                
                                // Restaurarea datelor originale Post
                                wp_reset_postdata();
                            ?>
                        </div>

Interogarea a funcționat bine cu celelalte categorii din celelalte pagini care au maxim 300 de articole. Dar categoria hello are mai mult de 900 de articole și când le afișez cu aceeași interogare primesc EROARE HTTP 500.

Categoria hello este un copil al unei categorii numite series dar aceasta nu este cauza problemei, am menționat doar pentru clarificare.

Notă: Când categoria hello avea 500 de articole, pagina a funcționat și articolele s-au afișat, dar pagina a durat mai mult de 3 secunde să se încarce. Deci cu cât adaug mai multe articole în categorie, cu atât pagina are nevoie de mai mult timp să se încarce și în final, dacă articolele devin prea multe, pagina îmi dă EROARE HTTP 500.

Notă: Am încercat codul pe localhost și totul a funcționat fără erori.

Actualizare: Am adăugat acest cod în wp-config

@ini_set( 'upload_max_filesize' , '99999M' );
@ini_set( 'post_max_size', '99999M');
@ini_set( 'memory_limit', '999999M' );
@ini_set( 'max_execution_time', '300000' );
@ini_set( 'max_input_time', '300000' );

și acest cod în .htaccess

php_value upload_max_filesize 99999M
php_value post_max_size 99999M
php_value memory_limit 999999M
php_value max_execution_time 300000
php_value max_input_time 300000

Am adăugat aceste coduri de mai sus pentru a crește memoria, dimensiunea de execuție și dimensiunea fișierelor de încărcare etc.

După ce le-am adăugat am primit EROARE 503 în loc de EROARE 500

Comentarii

În general, aceasta este mai degrabă o problemă de setări PHP decât una specifică WordPress, așa că ar trebui să crești setările PHP pentru timpul de execuție etc., dar există limite în acest sens. Deci, din perspectiva WordPress, optimizările ar trebui să fie făcute. În primul rând, ai putea lua în considerare utilizarea a ceva de genul 'fields' => 'ids', care să ofere doar ID-urile, dar să reducă încărcarea interogării. Desigur, va trebui să modifici bucla în consecință. În al doilea rând, atunci când ai de-a face cu interogări intensive din punct de vedere al resurselor, este recomandat să folosești mecanisme de caching, de exemplu folosind transients. În cele din urmă, este într-adevăr necesar să încarci toate articolele.

Nicolai Grossherr Nicolai Grossherr
13 aug. 2019 09:59:23

Da, vreau toate articolele pentru că este ca un serial TV cu toate episoadele

Maher Aldous Maher Aldous
13 aug. 2019 15:42:06

Ei bine, asta nu înseamnă că trebuie să le încarci pe toate deodată, ai putea, de exemplu, să divizezi procesul de încărcare. Oricum, mult noroc și succes!

Nicolai Grossherr Nicolai Grossherr
13 aug. 2019 16:05:01

Da, m-am gândit la asta. Cred că voi încărca primele 100 de articole la prima încărcare, apoi când pagina este încărcată voi folosi WordPress AJAX pentru a încărca celelalte articole. Ce părere ai despre asta?

Maher Aldous Maher Aldous
13 aug. 2019 17:14:33

Este o opțiune bună, dar nu uita de caching.

Nicolai Grossherr Nicolai Grossherr
13 aug. 2019 19:50:42

da, o voi face și voi lăsa această întrebare deschisă în speranța că cineva are o soluție :)

Maher Aldous Maher Aldous
14 aug. 2019 19:31:55
Arată celelalte 1 comentarii