How to Disable WP-Cron (wp-cron.php) for Faster Performance

Cron jobs are used to schedule tasks at periodic fixed times, dates, or intervals on your WordPress site. Some examples of a WordPress cron job might involve scheduling a post to publish, checking for updates, or a backup plugin running on a predefined schedule.

In WordPress, this is handled by WP-Cron, which is used to simulate a system cron. However, depending on the amount of traffic to your site, using the built-in cron handler can actually start to impact your page load times. So today we’ll show you how to disable WP-Cron (wp-cron.php) and instead, use a system cron for faster performance.

Performance Issues with WP-Cron

We deal with a lot of high-traffic and demanding sites. Because of this, we’ve seen a lot of performance issues with the WordPress built-in Cron handler: WP-Cron. First off, it’s important to understand that WP-Cron is not a real cron job, it’s simply what WordPress has created to mimic what a system cron does.

WP-Cron does not run continuously. By default, the wp-cron.php fires on every page load, which on high-traffic sites can cause problems. If a site doesn’t have enough PHP workers, sometimes a request will come in, WordPress will spawn the cron, but the cron has to wait for the worker, and therefore just sits there.

The reverse scenario is also true. If a site doesn’t have a lot of traffic, schedules could be missed due to the fact that no one has loaded a page.

A better approach is to disable WP-Cron and use the system cron instead. This runs on a pre-defined schedule and is even recommended in the official Plugin handbook.

How to Disable WP-Cron

To disable WP-Cron, add the following to your wp-config.php file, just before the line that says “That’s all, stop editing! Happy blogging.

Note: This disables it from running on page load, not when you call it directly via wp-cron.php.

define('DISABLE_WP_CRON', true);

How to Schedule System Cron

You will then need to schedule wp-cron.php from your server.

If your site is multisite, there are some extra setup steps you’ll need to take so cron jobs will run for your subsites. Here are a couple of resources we can recommend for that:

Create Cron Job in cPanel

If you’re using a host with cPanel, you can also create a system cron from their control panel.

Note: Make sure you disable the default WP-Cron above first.

Step 1

Log in to cPanel. In the Advanced section, click on Cron Jobs.

Step 2

Under the Add New Cron Job section, you can choose from a number of different pre-defined schedules, such as twice per hour or once per week. Your hosting provider most likely has a limit on how often they allow cron jobs to be run. Twice per hour is a common setting for shared hosts.

Step 3

Add the following command. Replace with your domain name. This command might vary slightly based on how your hosting is configured. Then click on “Add New Cron Job.”

wget -q -O - >/dev/null 2>&1

The >/dev/null 2>&1 part of the command above disables email notifications.

Choose the most suitable website package for your business and make your first move to developing your online presence now.