ActionScheduler_WPCLI_Scheduler_command::run()publicWC 1.0

Run the Action Scheduler

OPTIONS

[--batch-size=<size>]
The maximum number of actions to run. Defaults to 100.
[--batches=<size>]
Limit execution to a number of batches. Defaults to 0, meaning batches will continue being executed until all actions are complete.
[--cleanup-batch-size=<size>]
The maximum number of actions to clean up. Defaults to the value of --batch-size.
[--hooks=<hooks>]
Only run actions with the specified hook. Omitting this option runs actions with any hook. Define multiple hooks as a comma separated string (without spaces), e.g. --hooks=hook_one,hook_two,hook_three
[--group=<group>]
Only run actions from the specified group. Omitting this option runs actions from all groups.
[--exclude-groups=<groups>]
Run actions from all groups except the specified group(s). Define multiple groups as a comma separated string (without spaces), e.g. '--group_a,group_b'. This option is ignored when --group is used.
[--free-memory-on=<count>]
The number of actions to process between freeing memory. 0 disables freeing memory. Default 50.
[--pause=<seconds>]
The number of seconds to pause when freeing memory. Default no pause.
[--force]
Whether to force execution despite the maximum number of concurrent processes being exceeded.

Method of the class: ActionScheduler_WPCLI_Scheduler_command{}

No Hooks.

Return

null. Nothing (null).

Usage

$ActionScheduler_WPCLI_Scheduler_command = new ActionScheduler_WPCLI_Scheduler_command();
$ActionScheduler_WPCLI_Scheduler_command->run( $args, $assoc_args );
$args(array) (required)
Positional arguments.
$assoc_args(array) (required)
Keyed arguments.

ActionScheduler_WPCLI_Scheduler_command::run() code WC 9.3.3

public function run( $args, $assoc_args ) {
	// Handle passed arguments.
	$batch          = absint( \WP_CLI\Utils\get_flag_value( $assoc_args, 'batch-size', 100 ) );
	$batches        = absint( \WP_CLI\Utils\get_flag_value( $assoc_args, 'batches', 0 ) );
	$clean          = absint( \WP_CLI\Utils\get_flag_value( $assoc_args, 'cleanup-batch-size', $batch ) );
	$hooks          = explode( ',', WP_CLI\Utils\get_flag_value( $assoc_args, 'hooks', '' ) );
	$hooks          = array_filter( array_map( 'trim', $hooks ) );
	$group          = \WP_CLI\Utils\get_flag_value( $assoc_args, 'group', '' );
	$exclude_groups = \WP_CLI\Utils\get_flag_value( $assoc_args, 'exclude-groups', '' );
	$free_on        = \WP_CLI\Utils\get_flag_value( $assoc_args, 'free-memory-on', 50 );
	$sleep          = \WP_CLI\Utils\get_flag_value( $assoc_args, 'pause', 0 );
	$force          = \WP_CLI\Utils\get_flag_value( $assoc_args, 'force', false );

	ActionScheduler_DataController::set_free_ticks( $free_on );
	ActionScheduler_DataController::set_sleep_time( $sleep );

	$batches_completed = 0;
	$actions_completed = 0;
	$unlimited         = $batches === 0;
	if ( is_callable( [ ActionScheduler::store(), 'set_claim_filter' ] ) ) {
		$exclude_groups = $this->parse_comma_separated_string( $exclude_groups );

		if ( ! empty( $exclude_groups ) ) {
			ActionScheduler::store()->set_claim_filter('exclude-groups', $exclude_groups );
		}
	}

	try {
		// Custom queue cleaner instance.
		$cleaner = new ActionScheduler_QueueCleaner( null, $clean );

		// Get the queue runner instance
		$runner = new ActionScheduler_WPCLI_QueueRunner( null, null, $cleaner );

		// Determine how many tasks will be run in the first batch.
		$total = $runner->setup( $batch, $hooks, $group, $force );

		// Run actions for as long as possible.
		while ( $total > 0 ) {
			$this->print_total_actions( $total );
			$actions_completed += $runner->run();
			$batches_completed++;

			// Maybe set up tasks for the next batch.
			$total = ( $unlimited || $batches_completed < $batches ) ? $runner->setup( $batch, $hooks, $group, $force ) : 0;
		}
	} catch ( Exception $e ) {
		$this->print_error( $e );
	}

	$this->print_total_batches( $batches_completed );
	$this->print_success( $actions_completed );
}