ActionScheduler_WPCLI_Clean_Command::clean
Run the Action Scheduler Queue Cleaner
OPTIONS
- [--batch-size=<size>]
- The maximum number of actions to delete per batch. Defaults to 20.
- [--batches=<size>]
- Limit execution to a number of batches. Defaults to 0, meaning batches will continue all eligible actions are deleted.
- [--status=<status>]
- Only clean actions with the specified status. Defaults to Canceled, Completed. Define multiple statuses as a comma separated string (without spaces), e.g.
--status=complete,failed,canceled - [--before=<datestring>]
- Only delete actions with scheduled date older than this. Defaults to 31 days. e.g
--before='7 days ago',--before='02-Feb-2020 20:20:20' - [--pause=<seconds>]
- The number of seconds to pause between batches. Default no pause.
Method of the class: ActionScheduler_WPCLI_Clean_Command{}
No Hooks.
Returns
null. Nothing (null).
Usage
$ActionScheduler_WPCLI_Clean_Command = new ActionScheduler_WPCLI_Clean_Command(); $ActionScheduler_WPCLI_Clean_Command->clean( $args, $assoc_args );
- $args(array) (required)
- Positional arguments.
- $assoc_args(array) (required)
- Keyed arguments.
ActionScheduler_WPCLI_Clean_Command::clean() ActionScheduler WPCLI Clean Command::clean code WC 10.7.0
public function clean( $args, $assoc_args ) {
// Handle passed arguments.
$batch = absint( \WP_CLI\Utils\get_flag_value( $assoc_args, 'batch-size', 20 ) );
$batches = absint( \WP_CLI\Utils\get_flag_value( $assoc_args, 'batches', 0 ) );
$status = explode( ',', WP_CLI\Utils\get_flag_value( $assoc_args, 'status', '' ) );
$status = array_filter( array_map( 'trim', $status ) );
$before = \WP_CLI\Utils\get_flag_value( $assoc_args, 'before', '' );
$sleep = \WP_CLI\Utils\get_flag_value( $assoc_args, 'pause', 0 );
$batches_completed = 0;
$actions_deleted = 0;
$unlimited = 0 === $batches;
try {
$lifespan = as_get_datetime_object( $before );
} catch ( Exception $e ) {
$lifespan = null;
}
try {
// Custom queue cleaner instance.
$cleaner = new ActionScheduler_QueueCleaner( null, $batch );
// Clean actions for as long as possible.
while ( $unlimited || $batches_completed < $batches ) {
if ( $sleep && $batches_completed > 0 ) {
sleep( $sleep );
}
$deleted = count( $cleaner->clean_actions( $status, $lifespan, null, 'CLI' ) );
if ( $deleted <= 0 ) {
break;
}
$actions_deleted += $deleted;
$batches_completed++;
$this->print_success( $deleted );
}
} catch ( Exception $e ) {
$this->print_error( $e );
}
$this->print_total_batches( $batches_completed );
if ( $batches_completed > 1 ) {
$this->print_success( $actions_deleted );
}
}