GoFuckYourself.com - Adult Webmaster Forum

GoFuckYourself.com - Adult Webmaster Forum (https://gfy.com/index.php)
-   Webmaster Q & Fuckin' A (https://gfy.com/forumdisplay.php?f=27)
-   -   wordpress - php question (https://gfy.com/showthread.php?t=1088777)

LucyVanAngel 11-10-2012 08:43 AM

wordpress - php question
 
hi, one of my blogs is running too slow because of the amount of posts (over 5000)
the index.php file of wp has the following code:

#########
<?php if(have_posts()) { ?>
<?php while (have_posts()) : the_post(); ?>
#########

The have_posts() function is defined as follows:
############
./wp-includes/query.php: function have_posts() {
if ( $this->current_post + 1 < $this->post_count ) {
return true;
} elseif ( $this->current_post + 1 == $this->post_count && $this->post_count > 0 ) {
do_action_ref_array('loop_end', array(&$this));
// Do some cleaning up after the loop
$this->rewind_posts();
}

$this->in_the_loop = false;
return false;
}
#####################

Wordpress is returning EVERY single post (5000) in the database and then iterating over them performing a SQL query for each.
It does not help changing the theme because that routine is in wp itself not in the theme.

Anybody help ?

thanks

HostedinVegas 11-10-2012 12:54 PM

Your best bet is to limit the mysql_query, save beating the server. There are several ways to do this, check out http://www.phpsimplicity.com/tips.php?id=1 for some great howto's

Thanks,
Anthony

senortriangulo 11-11-2012 02:54 PM

Quote:

Originally Posted by LucyVanAngel (Post 19305878)
hi, one of my blogs is running too slow because of the amount of posts (over 5000)
the index.php file of wp has the following code:

#########
<?php if(have_posts()) { ?>
<?php while (have_posts()) : the_post(); ?>
#########

The have_posts() function is defined as follows:
############
./wp-includes/query.php: function have_posts() {
if ( $this->current_post + 1 < $this->post_count ) {
return true;
} elseif ( $this->current_post + 1 == $this->post_count && $this->post_count > 0 ) {
do_action_ref_array('loop_end', array(&$this));
// Do some cleaning up after the loop
$this->rewind_posts();
}

$this->in_the_loop = false;
return false;
}
#####################

Wordpress is returning EVERY single post (5000) in the database and then iterating over them performing a SQL query for each.
It does not help changing the theme because that routine is in wp itself not in the theme.

Anybody help ?

thanks

There's gotta be a way to configure this without messing with the PHP code right?

I don't really know much about Wordpress or what the_post() is doing, but if worst comes to worst, you could always add a function to query.php that sets current_post to a few hundred less than the number of posts.


function jump_post($index)
{
$this->current_post=$index;
}

Miguel T 11-11-2012 04:41 PM

Try to re-code the loop with WP_Query() , but limiting the results posted.
THat should fix the slowness you describe...

fusionx 11-12-2012 10:01 PM

I'm 99% certain it's only looping over the number of posts defined to show on the home page.

From the codex:

$post_count
The number of posts being displayed.

Not the total number of posts in your DB.


All times are GMT -7. The time now is 05:45 PM.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
©2000-, AI Media Network Inc