Action Scheduler: A WordPress Background Processing Library

Introduction

Action Scheduler is a robust WordPress library designed for managing background tasks and scheduled actions. Originally developed by WooCommerce, it has become a widely adopted solution for handling asynchronous operations in WordPress applications.

Core Concepts

Actions

  • Represents a single unit of work
  • Contains a hook name and optional arguments
  • Can be scheduled for immediate or future execution
  • Supports both one-time and recurring execution

Schedules

  • One-time execution
  • Recurring execution (daily, weekly, etc.)
  • Custom intervals
  • Cron-based scheduling

Queues

  • First-in, first-out (FIFO) processing
  • Priority-based execution
  • Batch processing capabilities
  • Automatic retry for failed actions

Key Features

Reliability

  • Persistent storage of actions
  • Automatic retry of failed actions
  • Transaction-safe execution
  • Error logging and monitoring

Scalability

  • Batch processing support
  • Configurable concurrency
  • Queue management
  • Resource optimization

Flexibility

  • Custom scheduling options
  • Priority levels
  • Group actions
  • Dependency management

Usage Examples

Scheduling Actions

// Schedule a single action
as_schedule_single_action(
    time() + 3600,
    'my_custom_action',
    array('param1' => 'value1')
);

// Schedule a recurring action
as_schedule_recurring_action(
    time(),
    86400,
    'my_recurring_action',
    array('param1' => 'value1')
);

Action Handlers

add_action('my_custom_action', 'my_action_handler');

function my_action_handler($args) {
    // Process the action
    // Log results
    // Handle errors
}

Advanced Features

Action Groups

// Group related actions
as_schedule_single_action(
    time(),
    'process_data',
    array('group' => 'data_import'),
    'data_import_group'
);

Priority Levels

// Schedule high priority action
as_schedule_single_action(
    time(),
    'critical_process',
    array(),
    '',
    'high'
);

Dependencies

// Schedule dependent actions
$parent_id = as_schedule_single_action(
    time(),
    'parent_action'
);

as_schedule_single_action(
    time(),
    'child_action',
    array('parent_id' => $parent_id)
);

Use Cases

Data Processing

  • Batch imports
  • Data synchronization
  • Report generation
  • Cache updates

Maintenance Tasks

  • Database cleanup
  • Log rotation
  • Cache clearing
  • Backup operations

Integration Tasks

  • API synchronization
  • External service updates
  • Webhook processing
  • Email queue processing

Official Resources