ActionScheduler_WPCLI_Scheduler_command::run
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--groupis 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.
Метод класса: ActionScheduler_WPCLI_Scheduler_command{}
Хуков нет.
Возвращает
null. Ничего (null).
Использование
$ActionScheduler_WPCLI_Scheduler_command = new ActionScheduler_WPCLI_Scheduler_command(); $ActionScheduler_WPCLI_Scheduler_command->run( $args, $assoc_args );
- $args(массив) (обязательный)
- Positional arguments.
- $assoc_args(массив) (обязательный)
- Keyed arguments.
Код ActionScheduler_WPCLI_Scheduler_command::run() ActionScheduler WPCLI Scheduler command::run WC 10.5.0
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 = 0 === $batches;
if ( is_callable( array( 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 );
}