Führen Sie eine Abfrage in Zeitlupe durch, um Speichererrors zu vermeiden.

Zum Beispiel in PHP, wenn Sie eine Datei pro Zeile lesen, können Sie fopen("inputfile.txt"); aber das bringt alle Zeilen in ein Array und verursacht Speichererrors, wenn die Datei sehr groß ist, eine Alternative dazu ist fopen("inputfile.txt", "r"); und fgets(); Sie können eine Datei pro Zeile von der Festplatte lesen, ohne alle in den Speicher zu laden.

Ich frage mich, ob es etwas Ähnliches mit Wp-Abfrage zum Durchsuchen der database “langsam” gibt, ohne darauf zu warten, das Speicherlimit zu erreichen, selbst wenn die Abfrage langsamer ausgeführt wird.

Hier ist die Abfrage:

 $arr = array(); $args = array( 'post_type' => 'post', 'order' => 'ASC', 'posts_per_page' => '-1', ); $query = new WP_Query($args); if($query->have_posts()): while ($query->have_posts()) : $query->the_post(); if(get_post_meta( get_the_ID(),'slider_postition',true )!='None') { $pos = get_field('slider_postition', get_the_ID()); $arr[$pos-1] = get_the_ID(); } endwhile; endif; for($i = 0;$i 0) { //output } } 

Solutions Collecting From Web of "Führen Sie eine Abfrage in Zeitlupe durch, um Speichererrors zu vermeiden."

Anscheinend versuchen Sie, die letzten 15 Posts zu erhalten, bei denen der Metaschlüssel nicht gleich “None” ist.

Anstatt alle Posts in den Speicher zu laden und dann durchzublättern, um zu sehen, ob der Meta-Wert nicht “None” ist, könnten Sie den Parameter meta_query .

 $args = [ 'post_type' => 'post', 'orderby' => 'date', 'order' => 'ASC', 'posts_per_page' => '15', 'meta_query' => [ [ 'key' => 'slider_position', 'value' => [ 'None' ], 'compare' => '!=', ], ], ]; $query = new WP_Query( $args );