加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 运行多个WordPress Cron,用于执行两个以不同固定间隔更新

发布时间:2020-12-13 22:23:45 所属栏目:PHP教程 来源:网络整理
导读:我在Wordpress中执行了多个cron作业.首先,我想清楚我已经搜索了很多这个问题,但没有找到确切的解决方案.所以我发布在这里. 问题是一个cron正在运行,但是另一个cron从未运行,我已经为第一个cron安排了每三个小时的间隔,但有时会在一分钟内执行多次,因为这有多
我在Wordpress中执行了多个cron作业.首先,我想清楚我已经搜索了很多这个问题,但没有找到确切的解决方案.所以我发布在这里.

问题是一个cron正在运行,但是另一个cron从未运行,我已经为第一个cron安排了每三个小时的间隔,但有时会在一分钟内执行多次,因为这有多个邮件.而其他永远不会执行.

任何人都可以通过Wordpress Cron提供执行两个不同固定间隔更新数据库的功能的解决方案.提前谢谢了.

//The activation hooks is executed when the plugin is activated
 register_activation_hook(__FILE__,'activate_one');
 register_activation_hook(__FILE__,'activate_two');
 //Filter for Adding multiple intervals
 add_filter( 'cron_schedules','intervals_schedule' );

 function intervals_schedule($schedules) {
     $schedules['threehour'] = array(
        'interval' => 10800,// Every 3 hours
        'display'  => __( 'Every 3 hours' )
     );
     $schedules['onehour'] = array(
         'interval' => 3600,// Every 1 hour
         'display'  => __( 'Every 1 hour' )
     );

     return $schedules;
  }

  //Schedule a first action if it's not already scheduled
  function activate_one() {
      if (!wp_next_scheduled('cron_action_one')) {
          wp_schedule_event( time(),'threehour','cron_action_one');
      }
  }

  //Hook into that action that'll fire threehour
  add_action('cron_action_one','execute_one');

  function execute_one()
  {
      //Do something or update in database;
  }

  //Schedule a second action if it's not already scheduled
  function activate_two() {
      if (!wp_next_scheduled('cron_action_two')) {
          wp_schedule_event(time(),'onehour','cron_action_two');
      }
  }

  //Hook into that action that'll fire onehour
  add_action('cron_action_two','execute_two');

  function execute_two()
  {
      //Do something or update in database;
  }

解决方法

最有可能的是,在编写代码和测试时间间隔期间,您已经安排了一些其他cron_action_two事件,这些事件将在稍后的某个时间调用.您可以使用 here所示的方法之一进行检查.Cron列表应该清楚,并且很可能会解决您的问题.

您的代码中应该修复一些内容以使其更稳定并避免此类问题:

>清除插件停用时的预定事件,如下所示:

register_deactivation_hook( __FILE__,'my_deactivation');
function my_deactivation() {
    wp_clear_scheduled_hook('my_hourly_event');
}

>清除激活时的预定挂钩(YES:wp_clear_scheduled_hook(‘my_hourly_event’);)而不是检查它是否已经存在(NO:if(!wp_next_scheduled(‘my_hourly_event’)))

祝好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读