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