WP Cron jobs loops infinitely

时间:2020-02-09 作者:frank Collins

我正在编写一个脚本来添加一个命名的Cron作业,该作业可以更新单个用户,大约每5分钟运行一次。

我的问题是,每隔一秒钟左右,每个用户都会反复运行作业。下面是我在函数中放置的代码。php文件。

这是我第一次使用WordPress尝试WP Cron功能,我想知道我是否正确设置了作业。

function so_custom_cron_schedule( $schedules ) {
    $schedules[\'every_5_minutes\'] = array(
        \'interval\' => 300,
        \'display\'  => __( \'Every 5 minutes\' ),
    );
    return $schedules;
}
add_filter( \'cron_schedules\', \'so_custom_cron_schedule\' );

function update_social_user($user_id){
  $user = get_userdata($user_id);
  if(!$user){
    return;
  }
  var_error_log(\'running for \'.$user_id);
}

function assign_cron(){
  $users = get_users([ \'role__in\' => [ \'administrator\', \'seller\'] ]);
  $args = array(false);
  foreach($users as $user){
    $hook_name = \'update_fb_\'.$user->ID;
    add_action($hook_name,\'update_social_user\');
    if(!wp_next_scheduled($hook_name,$args)){
      wp_schedule_event(time(),\'every_5_minutes\',$hook_name,array($user->ID));
    }else{
      var_error_log(\'Already set\');
    }
  }
}

assign_cron();

1 个回复
SO网友:Raffaele Turci

我通常定义IF状态和使用wp_clear_scheduled_hook 作用请参见示例:

if (get_option(\'atenasupervisor_scheduler\') <> \'Stop\') {
   echo \'Active (\'. get_option(\'atenasupervisor_scheduler\').\')</strong></div>\';
} else {
    wp_clear_scheduled_hook( \'atenasupervisor_my_email\' );
    echo \'Not active (\'. get_option(\'atenasupervisor_scheduler\').\')</strong></div>\';
}
``

相关推荐

Wp-cron是同时运行所有调度的任务,还是一个接一个地运行?

我正在开发一个插件,想添加一个cron任务(比如cron\\u task\\u test),但我有一个疑问。如果计划与我的任务(cron\\u task\\u test)同时运行15个任务(可能由多个插件或用户自己安排),wp cron会逐个选择它们吗,即在第一个任务完成后选择另一个任务,或者如果第一个任务耗时超过一分钟?还是会一个接一个地被解雇简而言之,cron\\u锁是如何工作的?如果它一个接一个地执行,那么运行所有任务的主cron线程本身是否会超过服务器的最大执行时间限制(通常为30秒)?如果我的任