wordpress的cronjob无限运行

wordpress的cronjob无限运行,wordpress,Wordpress,我有以下代码: // set up cron job wp_schedule_event(time(), 'hourly', 'test_event'); add_action('test_event', 'testFunction'); function testFunction() { $query = new WP_Query(array( 'post_type' => 'tour', 'post_status' => 'publis

我有以下代码:

// set up cron job
wp_schedule_event(time(), 'hourly', 'test_event');

add_action('test_event', 'testFunction');

function testFunction()
{
    $query = new WP_Query(array(
        'post_type' => 'tour',
        'post_status' => 'publish'
    ));


    while ($query->have_posts()) {
        $query->the_post();
        $post_id = get_the_ID();

        echo $post_id . "a<br>";
    }

}
有时甚至更多,有时会导致内存错误。在我看来,cronjob正在无限地运行。我不明白为什么

不是WP专业人士,因此任何建议都非常感谢


谢谢。

当您调用
wp\u schedule\u event
时,将注册一个新事件。文档建议您只需调用该函数一次(事件在多次访问中保持全局性)

“若要在插件中安排每小时一次的事件,请在激活时调用
wp\u schedule\u event
(否则,您将得到大量已安排的事件!)”


您需要使用
wp\u unschedule\u event
清除当前绑定,然后调用该函数一次。如果它是您的主题的一部分,请使用它们激活并将您的主题切换到其他主题并返回。

wp\u schedule\u event
在您的WordPress安装中注册cron任务

所以,您在这里所做的是,每次运行cron时,您都会告诉WordPress在上次运行函数的基础上再运行一次

如果您已经访问了cron页面10次,那么每次访问您的cron都将运行10次


如果需要,您可以使用
wp\u unschedule\u event
取消事件计划。

有没有快速取消事件绑定的方法?如果我使用wp_unschedule_事件调用,我如何检查事件是否完全未注册?我不知道,您可以查看源代码以找出它们的存储位置。或者尝试这样的插件来查看活动事件:回顾一下,您可以在循环中使用
wp\u next\u scheduled
。如果给定钩子没有“下一个事件”,则返回false,因此只需循环“非计划事件”“函数until
wp\u next\u scheduled
返回false。我测试它的方式有什么问题吗?i、 e.访问该url。因为我不太确定wp-cron.php是做什么的。听起来好像如果我在代码中的某个地方有一个wp_schedule_事件调用,那么访问该url将再次注册该事件?就是这样,它在每次加载时都会重新注册,从而导致大量运行
1
2
3
1
2
3