为什么一个完全正常的循环会出现偏移量错误和最大执行时间错误?

时间:2012-06-09 作者:Jason Rhodes

我对这个问题太生气了,再也看不清了,所以我肯定会忽略一些简单的事情。请帮忙。

以下是我的所有代码,已精简为:

<?php

$home_gallery = new WP_Query(array(
"posts_per_page" => 2
));

if ( $home_gallery->have_posts() ) : while ( $home_gallery->have_posts() ) : 

//the_post();

//if (get_post_meta(get_the_ID(), "_is_front_page_gallery", true) == "true") {
    //the_content();
    //exit;
//}

endwhile;
?>
<?php endif; ?>
试图在我的WordPress站点的首页上运行这段代码会导致我的CPU死机,我的风扇过热,并且出现两个错误之一。要么我得到一长串“Offset=10”错误(此时无法重新创建该错误,因此我无法复制/粘贴),要么最近我得到的是:

致命错误:超过最大执行时间30秒

任何人有什么想法我都乐意听到。它在我的本地主机上运行,一直运行到今天下午。

问题似乎与此非常相似:https://wordpress.stackexchange.com/questions/43564/repetitive-error-maximum-execution-has-exceeded-30-secs

因无益而被关闭:(

1 个回复
最合适的回答,由SO网友:Jason Rhodes 整理而成

我终于弄明白了。这也很简单。

正如我发布的那样,该循环永远不会结束,因为while循环中没有推进计数器的内容。

但是,如果我取消注释外观相当正常的代码并运行它,它仍然不会关闭,因为我没有推进特定查询对象的计数器。当你跑步时the_post(), 它在全局循环对象内推进计数器,并设置全局$post对象,这是调用以下函数时将运行的对象the_title() 和其他人。所以你会浏览数据库中的每一篇文章,因为$home_gallery 查询对象只有5个帖子,全局循环中有所有帖子。

换言之,因为我没有特别跑$home_gallery->the_post();, 一切都爆炸了。

希望这对其他人有帮助。

结束

相关推荐

Pagination on 2nd loop

好的,我正在创建一个业务列表网站,该网站使用列表“类型”的自定义分类法。我需要在分类法归档页面上显示两个循环,一个用于“赞助”列表,另一个用于常规列表。分类法存档:http://pastie.org/3187162分页功能:http://pastie.org/3187168这两部分都在做我想做的事情,但有一个问题:在一个特定类别中大约有50个非赞助商列表,但第二个查询最多有5个“页面”(即,如果我将posts\\u per\\u page设置为5,则有25个列表,如果我将posts\\u per\\u p