每小时调度的wp_cron作业不断被重新调度

时间:2015-09-17 作者:Jacob Raccuia

每次刷新页面时,我的cron作业update_backup_now_feed 似乎计时器已重置。我正在使用一个名为“crontrol”的插件,它显示下一次调用之前的时间,每次刷新时,它都会重置为1小时。唯一一次日程安排似乎是在我避开网站一个多小时后刷新的时候。

下面的代码是否有问题,或者这是一个bug?我在多站点上工作。我发现this question 这是相似的-在回答的评论部分,用户提到只有在多站点上才有相同的问题。

Why does refreshing the page reset the timer for wp cron events?

这是我所有与cron相关的代码。

// add custom cron interval
add_filter(\'cron_schedules\', \'add_custom_cron_intervals\', 10, 1);
function add_custom_cron_intervals($schedules) {
    $schedules[\'every_two_minutes\'] = array(
    \'interval\'  => 120,
    \'display\' => \'Every Two Minutes\'
    );

    return (array)$schedules; 
}

add_action(\'init\', \'register_update_feed_event\');
function register_update_feed_event() {
  if(!wp_next_scheduled(\'update_now_feed\')) {
        wp_schedule_event(time(), \'every_two_minutes\', \'update_now_feed\');
    }

    if(!wp_next_scheduled(\'update_backup_now_feed\')) {
        wp_schedule_event(time(), \'hourly\', \'update_backup_now_feed\');
    }
}   

add_action(\'update_now_feed\', \'update_now_feed_function\');
function update_now_feed_function() {
    NowFeed::set_instagram_cache();
    NowFeed::set_twitter_cache();
}


add_action(\'update_backup_now_feed\', \'update_backup_now_feed_function\');
function update_backup_now_feed_function() {
    NowFeed::set_instagram_backup_cache();
    NowFeed::set_twitter_backup_cache();
}
UDPATE我以为我已经解决了,但它却引发了更多的问题。

在昨晚的部分时间里,我的代码如下所示。我已删除wp\\u next\\u计划检查。。。它确实创造了50个不同的预定活动。

//if(!wp_next_scheduled(\'update_backup_now_feed\')) {
    wp_schedule_event(time(), \'hourly\', \'update_backup_now_feed\');
//}
crontrol只显示了其中一个,因为它们都有相同的名称。我意识到我可以继续删除它们,但它们并没有消失。我一直在点击,最后,大约50次点击后,它们就消失了。这无疑帮助了我解决了一些问题。不要拉一个me并删除该条件(尽管我不知道如何更新cron作业)

现在,我已将此代码放入我的WP\\u配置中。define(\'DISABLE_WP_CRON\', true); 看看是否可以解决更多问题。

此时,刷新页面不会调用我的任何事件。但是,我转到自定义URL来测试cron-/wp-cron.php?doing_wp_cron 当我刷新它时,我的行为有时会显示出反应。这是我不明白的部分。

Does disabled wp cron and enabling it via real cron cause the \'timers\' to stop functioning as expected? If I have an hourly job and I call the cron every 5 minutes, will it also be called every 5 minutes? Why does calling it manually sometimes call the event and sometimes not?

1 个回复
SO网友:Jacob Raccuia

好我已经弄明白了。

手动删除Crontrol中的所有内容并没有我想象的那么有用。我去了我的wp_options 并删除了整个cron条目。现在刷新时,一切都或多或少地符合我的预期,我所有的问题现在都得到了回答。

当禁用WP Cron以启用服务器Cron时,时间wp_scheduled_events 是不会忘记的。如果调用该文件,作业在应该运行之前还有30分钟,则不会运行。因此,调用cron作业的频率比调用最小计时器的频率高没有任何好处。如果您的最短计时器为每小时,并且您已禁用WP_CRON, 不要将cron设置为少于一小时!

相关推荐

Wordpress wp-cron not working

Cron未按预期工作。如果我安排帖子或事件管理器事件,如果在发布时间之后访问站点,则不会发布。如果我去http://somedomain.tld/wp-cron.php?doing_wp_cron 它为空,而调试设置为打开。它应该是空的还是应该显示一些错误(如果有)?错误日志为空。WP Crontrol插件显示cron作业。有没有提示下一步要检查什么?