/wp-content/plugins/all-in-one-seo-pack/vendor/woocommerce/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Scheduler_command.php
https://gitlab.com/ebrjose/comcebu · PHP · 158 lines · 66 code · 14 blank · 78 comment · 2 complexity · 1dc64b6e45bd9afb8c7e1ab1fb74b682 MD5 · raw file
- <?php
- /**
- * Commands for Action Scheduler.
- */
- class ActionScheduler_WPCLI_Scheduler_command extends WP_CLI_Command {
- /**
- * 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.
- *
- * [--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.
- *
- * @param array $args Positional arguments.
- * @param array $assoc_args Keyed arguments.
- * @throws \WP_CLI\ExitException When an error occurs.
- *
- * @subcommand run
- */
- 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', '' );
- $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;
- 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 );
- }
- /**
- * Print WP CLI message about how many actions are about to be processed.
- *
- * @author Jeremy Pry
- *
- * @param int $total
- */
- protected function print_total_actions( $total ) {
- WP_CLI::log(
- sprintf(
- /* translators: %d refers to how many scheduled taks were found to run */
- _n( 'Found %d scheduled task', 'Found %d scheduled tasks', $total, 'action-scheduler' ),
- number_format_i18n( $total )
- )
- );
- }
- /**
- * Print WP CLI message about how many batches of actions were processed.
- *
- * @author Jeremy Pry
- *
- * @param int $batches_completed
- */
- protected function print_total_batches( $batches_completed ) {
- WP_CLI::log(
- sprintf(
- /* translators: %d refers to the total number of batches executed */
- _n( '%d batch executed.', '%d batches executed.', $batches_completed, 'action-scheduler' ),
- number_format_i18n( $batches_completed )
- )
- );
- }
- /**
- * Convert an exception into a WP CLI error.
- *
- * @author Jeremy Pry
- *
- * @param Exception $e The error object.
- *
- * @throws \WP_CLI\ExitException
- */
- protected function print_error( Exception $e ) {
- WP_CLI::error(
- sprintf(
- /* translators: %s refers to the exception error message */
- __( 'There was an error running the action scheduler: %s', 'action-scheduler' ),
- $e->getMessage()
- )
- );
- }
- /**
- * Print a success message with the number of completed actions.
- *
- * @author Jeremy Pry
- *
- * @param int $actions_completed
- */
- protected function print_success( $actions_completed ) {
- WP_CLI::success(
- sprintf(
- /* translators: %d refers to the total number of taskes completed */
- _n( '%d scheduled task completed.', '%d scheduled tasks completed.', $actions_completed, 'action-scheduler' ),
- number_format_i18n( $actions_completed )
- )
- );
- }
- }