Any links to online stores should be assumed to be affiliates. The company or PR agency provides all or most review samples. They have no control over my content, and I provide my honest opinion.
I was recently dealing with a client that was running very large complex scheduled tasks through Action Scheduler within WordPress. Almost daily, the website would experience intermittent downtime when these scripts were running, but the server itself was not experiencing overloaded resources.
It was immediately obvious that processing these scripts within WordPress itself was likely a cause of the problem. I created this post partly to get a better understanding of cron and scheduling myself, but also to help other people select the best solution for their needs.
What is WordPress Cron

WordPress Cron (WP-Cron) is a built-in feature in WordPress that handles scheduled tasks within the platform. It allows you to automate certain actions, like publishing scheduled posts, sending email notifications, checking for plugin or theme updates, or running custom tasks defined by plugins or themes.
How WP-Cron Works
WP-Cron is not a true cron job like the system-level cron jobs in Unix/Linux. Instead, it runs whenever someone visits your website. This means that WP-Cron depends on user traffic to trigger the scheduled tasks. For instance:
- If a task is scheduled for 10:00 AM but no one visits the site until 10:30 AM, the task will run at 10:30 AM.
Common Uses of WP-Cron
- Publishing scheduled posts.
- Backing up your site with plugins like UpdraftPlus or BackupBuddy.
- Checking for updates for WordPress core, themes, or plugins.
- Cleaning up database transients or expired sessions.
- Running custom plugin functionality.
WP-Cron Limitations
- Traffic Dependency: If your site gets very little traffic, tasks may not run on time.
- Performance Impact: On high-traffic sites, WP-Cron might run excessively, causing performance issues.
- Lack of Precision: Scheduled tasks might not run at the exact time due to the way WP-Cron is triggered.
What is Action Scheduler
Action Scheduler is a robust, background task processing library used in WordPress. It’s commonly employed by plugins like WooCommerce to handle time-based or recurring tasks that need to run asynchronously or in the background. Unlike the standard WordPress Cron system, Action Scheduler is designed to handle a large number of scheduled tasks reliably, even on high-traffic websites or in complex scenarios.
Key Features of Action Scheduler
- Database-Driven: Tasks are stored in the WordPress database, making them independent of site traffic or server-level cron jobs.
- Scalable: Optimized for handling thousands of tasks without significantly impacting site performance.
- Queue Management: Allows prioritization and sequential execution of tasks.
- Asynchronous Execution: Ensures tasks run in the background without blocking user interactions.
- Retry Logic: Failed tasks can be automatically retried, improving reliability.
- Developer-Friendly: Provides hooks and APIs to create, manage, and monitor tasks.
Action Scheduler runs tasks (called “actions”) that are scheduled to execute at specific times. These tasks are processed through a queue, and the system ensures they are executed in order while preventing server overload.
Tasks can be:
- One-time: Scheduled to run at a specific time.
- Recurring: Set to repeat at defined intervals.
Benefits of Action Scheduler
- Reliability: Works independently of website traffic.
- Efficiency: Handles high volumes of tasks without performance degradation.
- Flexibility: Ideal for plugins and developers requiring sophisticated background task management.
Feature | Action Scheduler | WP-Cron |
Trigger Method | Database-driven (independent of traffic) | Traffic-dependent |
Scalability | Handles large volumes of tasks | Limited by traffic and server resources |
Retry Mechanism | Built-in retry for failed tasks | None (requires manual setup) |
Developer Control | More customizable and robust | Basic scheduling capabilities |
Queue Management | Advanced queue management capabilities | No queue management |
What is Server Cron

Server Cron is a Unix/Linux-based utility used to schedule and automate tasks on a server. These tasks, often referred to as “cron jobs,” run at predefined intervals or specific times without requiring manual intervention. Cron is widely used for automating repetitive tasks, system maintenance, and running scripts.
How Server Cron Works
- Cron Daemon (crond):
- A background process that checks the schedule (cron table or “crontab”) every minute.
- Executes tasks listed in the crontab file at the specified time.
- Crontab Files:
- Each user on the system can have their own crontab file.
- Contains a list of scheduled tasks with specific timing and execution commands.
- Task Scheduling Syntax:
- Cron uses a specific syntax for defining task schedules:
* * * * * command_to_run
Each asterisk corresponds to:
- Minute (0-59)
- Hour (0-23)
- Day of the Month (1-31)
- Month (1-12)
- Day of the Week (0-7, where 0 and 7 represent Sunday)
Example: Run a script every day at midnight:
0 0 * * * /path/to/script.sh
Common Uses of Server Cron
- System Maintenance:
- Clearing temporary files.
- Rotating log files.
- Running security scans or updates.
- Website and Application Management:
- Backing up databases.
- Running periodic scripts or tasks (e.g., cleaning up expired sessions).
- Triggering WordPress Cron tasks (e.g., wp-cron.php).
- Data Synchronization:
- Syncing files between servers.
- Pulling data from APIs or external systems.
- Monitoring and Alerts:
- Checking server health metrics.
- Sending alerts or notifications based on conditions.
Advantages of Server Cron
- Precision: Executes tasks at exact times, independent of web traffic or external triggers.
- Reliability: Runs even when there’s no website traffic or when the web server is down.
- Efficiency: Operates outside the web stack, minimizing resource contention with web requests.
- Versatility: Can automate almost any server-side task.
- Low Overhead: Minimal impact on server performance as it runs as a lightweight background process.
What is Plesk Cron

Plesk Cron refers to the feature in the Plesk control panel that allows users to schedule and manage cron jobs directly from the Plesk interface. It is a user-friendly way to automate repetitive server tasks, eliminating the need to manually edit crontab files through the command line.
Plesk Cron is ideal for users managing websites or applications hosted on servers with Plesk, as it provides a graphical interface to set up and manage cron jobs.
This cron is effectively the same as a server cron, but it was worth mentioning due to the popularity of Plesk for web hosting.
Features of Plesk Cron
- Graphical Interface:
- No need for command-line knowledge.
- Simplifies scheduling tasks by using dropdown menus and input fields.
- Task Automation:
- Automates server tasks like backups, script execution, and database maintenance.
- Multiple Schedule Options:
- Allows fine-tuning of task timing (e.g., run every minute, hour, day, week, or month).
- Output Logging:
- Provides options to log the output of cron jobs for debugging or monitoring purposes.
- User-Specific Settings:
- Tasks can be created for specific users, with access limited to their directories.
How to Set Up a Cron Job in Plesk
- Access the Cron Job Interface:
- Log in to Plesk.
- Navigate to Websites & Domains.
- Click on Scheduled Tasks under your domain or subscription.
- Add a New Task:
- Click Add Task to create a new cron job.
- Configure Task Settings:
- Task Type: Choose the type of task (command, URL request, or PHP script).
- Example command:
/usr/bin/php /path/to/script.php
- Example command:
- Command/Script: Enter the command or script to execute.
- Run Timing: Use the dropdowns to specify the frequency of execution (minute, hour, day, month, and day of the week).
- Set Notification Options:
- Choose whether to receive email notifications for each task execution or only for errors.
- Save the Task:
- Click OK or Apply to save the cron job.
WordPress Cron vs Action Scheduler Performance
WP-Cron | Action Scheduler | |
Trigger Mechanism | Dependent on site traffic (runs when a user visits the site). | Database-driven; independent of site traffic. |
Task Execution | Executes all pending tasks at once, potentially causing spikes in resource usage. | Processes tasks in a queue, reducing the load on server resources. |
Scalability | Struggles with a high volume of tasks; performance degrades with traffic or task load. | Designed to handle large queues of tasks reliably, even on high-traffic sites. |
Task Resilience | No retry mechanism; failed tasks must be manually retried. | Includes built-in retry logic for failed tasks. |
Resource Efficiency | Can cause resource spikes if many tasks are triggered simultaneously. | Uses a queue system to execute tasks incrementally, reducing resource spikes. |
Server Overload Risk | Higher risk due to simultaneous task execution on user visits. | Lower risk due to controlled execution of tasks. |
Execution Precision | Less precise; tasks can be delayed if there’s low site traffic. | Highly reliable; tasks run at or near their scheduled times. |
Database Impact | Stores minimal task data but executes inefficiently under load. | Stores task data in the database but processes them more efficiently. |
High-Traffic Suitability | Poor; excessive calls can lead to performance issues. | Excellent; designed to handle large numbers of tasks on high-traffic sites. |
When to Use WP-Cron
WP-Cron is suitable for:
- Low-traffic websites where tasks don’t need to run precisely.
- Simple scheduled tasks like publishing posts or checking for updates.
- Sites without access to server-level cron jobs or Action Scheduler.
When to Use Action Scheduler
Action Scheduler is better for:
- High-traffic websites requiring efficient task processing.
- Complex, asynchronous tasks with retry mechanisms.
- Plugins like WooCommerce that need to handle recurring events, large queues, or background processes.
- Scenarios where reliability and precision are critical.
WP-Cron vs Server Cron
Aspect | WP-Cron | Server Cron |
Trigger Mechanism | Runs when a user visits the site. Tasks are triggered by PHP during a web request. | Executes based on a system-level schedule (e.g., Linux cron jobs) independently of site traffic. |
Precision | Dependent on site traffic; tasks may be delayed if no visitors are present. | Extremely precise; tasks run exactly on schedule. |
Resource Usage | Runs during web requests, potentially increasing page load times. | Runs outside of web requests, minimizing impact on website performance. |
Scalability | Struggles with large numbers of tasks on high-traffic sites; may cause performance bottlenecks. | Efficiently handles high-volume tasks without affecting website performance. |
Task Management | Limited control and monitoring of tasks. Tasks may pile up during low traffic periods. | Full control over task scheduling with robust logging and error handling. |
Resilience | No automatic retries for failed tasks; tasks may be skipped if traffic is low. | Fully reliable, with fail-safes such as logging and retry logic at the server level. |
Concurrency | Executes all pending tasks in a single request, potentially causing resource spikes. | Can execute tasks in parallel, with better resource allocation. |
Performance Impact | Can slow down the site, especially if multiple tasks run during a single user visit. | Does not affect website performance directly, as it runs outside of the web server. |
Implementation Complexity | Simple to set up; built into WordPress by default. | Requires access to server configuration (e.g., cPanel, SSH) to configure. |
High-Traffic Suitability | Poor; can lead to excessive resource usage and degraded user experience. | Excellent; handles high volumes of tasks efficiently without impacting user experience. |
Performance Benefits of Server Cron
- Task Precision: Server Cron executes tasks on a strict schedule without delay.
- Reduced Load on Web Server: Tasks run independently of web traffic, ensuring consistent site performance.
- Scalable for Complex Workloads: Handles a large number of tasks efficiently, even for high-traffic sites or complex operations.
- Improved Resource Allocation: Spreads out resource usage by executing tasks in isolated environments.
Performance Issues with WP-Cron
- Traffic-Dependent: On low-traffic sites, tasks may not execute on time. On high-traffic sites, it can cause resource spikes.
- Blocked Execution: If one task is slow or fails, it can delay or block other tasks in the queue.
- Impact on Page Load: Running tasks during user requests increases page load time.
Action Scheduler vs Server Cron Performance
Aspect | Action Scheduler | Server Cron |
Trigger Mechanism | Database-driven and tied to WordPress but independent of traffic; processes tasks using PHP. | System-level scheduler, independent of WordPress and site traffic. |
Task Scheduling | Handles one-time, recurring, and delayed tasks within the WordPress environment. | Executes tasks based on a fixed schedule defined at the system level. |
Scalability | Designed for high scalability within WordPress; handles large queues efficiently. | Extremely scalable, but requires custom implementation for handling queues. |
Task Execution | Processes tasks incrementally, reducing server load spikes; retries failed tasks automatically. | Executes tasks directly on schedule without retries unless explicitly programmed. |
Precision | Reliable but slightly less precise due to PHP execution delays. | Highly precise; tasks run exactly at the scheduled time. |
Resource Usage | Can be resource-intensive on high-traffic sites as it uses PHP and database queries. | Minimal impact on resources; executes tasks in isolation from the website. |
Retry Mechanism | Built-in retry for failed tasks; excellent for background processes. | No retry mechanism unless explicitly coded. |
Performance Impact | Can impact database performance on sites with large queues or high traffic. | Does not affect website performance as it runs outside the web server. |
Integration | Native to WordPress; excellent for managing tasks tied to WordPress plugins and themes. | Requires external integration with WordPress (e.g., calling wp-cron.php). |
High-Traffic Suitability | Handles high volumes of tasks effectively but may impact database performance. | Ideal for high-traffic sites as it operates outside WordPress entirely. |
When to Use Action Scheduler
Action Scheduler is optimized for tasks that:
- Integrate deeply with WordPress, like WooCommerce subscriptions, email notifications, or plugin-specific processes.
- Require retries or background task management with queues.
- Involve handling a large number of tasks but within a WordPress-centric environment.
Strengths:
- Built-in task queuing and retry mechanisms.
- Designed for WordPress and integrates seamlessly with plugins.
- Can handle large task volumes within the WordPress environment.
Limitations:
- Resource-intensive for PHP and database queries, particularly on high-traffic sites.
- Slightly less precise due to PHP’s reliance on web server timing.
When to Use Server Cron
Server Cron is the better option for tasks that:
- Need strict precision and independent execution from WordPress.
- Are resource-heavy and might burden the WordPress environment.
- Require system-level integration for processes like backups, log rotations, or external script executions.
Strengths:
- Highly precise and efficient.
- Operates outside the WordPress stack, minimizing resource contention.
- Handles tasks across multiple systems or environments.
Limitations:
- No built-in retry mechanism (requires additional scripting).
- Requires knowledge of server configuration and scripting for advanced setups.
- Lacks native integration with WordPress; must be connected via
wp-cron.php
.

I am James, a UK-based tech enthusiast and the Editor and Owner of Mighty Gadget, which I’ve proudly run since 2007. Passionate about all things technology, my expertise spans from computers and networking to mobile, wearables, and smart home devices.
As a fitness fanatic who loves running and cycling, I also have a keen interest in fitness-related technology, and I take every opportunity to cover this niche on my blog. My diverse interests allow me to bring a unique perspective to tech blogging, merging lifestyle, fitness, and the latest tech trends.
In my academic pursuits, I earned a BSc in Information Systems Design from UCLAN, before advancing my learning with a Master’s Degree in Computing. This advanced study also included Cisco CCNA accreditation, further demonstrating my commitment to understanding and staying ahead of the technology curve.
I’m proud to share that Vuelio has consistently ranked Mighty Gadget as one of the top technology blogs in the UK. With my dedication to technology and drive to share my insights, I aim to continue providing my readers with engaging and informative content.