导致超时错误的WordPress循环(超过最大执行时间30秒)

时间:2015-12-08 作者:Dominic Fagan

每当我尝试使用WP\\u查询进行循环时,我突然发现内存和超时错误。代码如下:

$args = array(
    \'post_type\' => \'post\',
    \'posts_per_page\' => \'3\',
    \'fields\' => \'ids\'
);

$query = new WP_Query($args);

 while($query->have_posts()) {

 }
通过3行循环显然不会使服务器过载,因此会发生某种错误。正如我所说,这只是突然发生的,它在早些时候运行良好。当它第一次出现故障时,我得到的是内存错误,但现在是相同的错误:

致命错误:在C:\\Projects\\fieldaware中超过了30秒的最大执行时间。dev\\wp包含\\查询。php在线3760

所有帖子类型都会发生这种情况。我可以通过管理员帖子编辑器查看帖子,所以这似乎只是我的代码导致的问题。

我有什么办法可以诊断出这是怎么回事吗?我还应该提到,使用get\\u posts不会导致任何超时错误,因此:

$query = get_posts($args);

 foreach($query as $post) {

 }
工作正常,只是WP\\U查询导致了问题。

更新时间:

我试着运行之前运行过的代码,但它再次运行,我不明白,它在这里:

    $args = array(
    \'post_type\' => \'fa_asset\',
    \'posts_per_page\' => 50,
    \'paged\' => 1
);

$query = new WP_Query($args);

$data = array(\'data\' => array());
//      ID, Model, Manufacturer, Serial Number, Last Service, Service Frequency, Next Service, Type

if ($query->have_posts()) {

    while($query->have_posts()) {
        $query->the_post();
        echo \'<p>TEST</p>\';

        $id = $query->post->ID;

        $type = $query->post->post_title;
        $manufacturer = get_post_meta($id,\'manufacturer\',true);
        $serial_number = get_post_meta($id,\'serial_number\',true);

        $data[\'data\'][] = array(
            \'id\',
            \'model\',
            $manufacturer,
            $serial_number,
            \'last service\',
            \'service frequency\',
            \'next service\',
            $type
        );
    }

}
wp_reset_postdata(); 

echo "<pre>" . json_encode($data,JSON_PRETTY_PRINT). "</pre>";
我对这篇文章完全迷茫了(顺便说一句,这不是帖子类型,我试着改变它)。我看不出更详细的代码有什么不同。

1 个回复
SO网友:Dominic Fagan

是的,问题是Milo提到的,我在循环中没有\\u帖子,所以循环无限运行。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请