After a lot of debugging, I was able to figure out that Media Temple’s (dv) configuration was responsible for the “Missed schedule” errors I was getting in WordPress. By default, the /etc/hosts file looks like this:
127.0.0.1 yourdomain.com yourdomain localhost localhost.localdomain
To execute cron tasks, WordPress needs to post to the URL http://yourdomain.com/wp-cron.php?doing_wp_cron. This isn’t usually a problem, but with the above hosts file and Plesk’s Apache configuration, that URL will actually result in a 404 error.
I tried removing yourdomain.com and youdomain from the hosts file:
127.0.0.1 localhost localhost.localdomain
127.0.0.1 localhost localhost.localdomain xxx.xxx.xxx.xxx yourdomain.com yourdomain
Now when you restart the VPS, these changes to the hosts file will remain.
I looked at several other possible solutions to fix the “Missed schedule” problem. One solution was setting the “ALTERNATE_WP_CRON” constant in the wp-config.php:
This activated some very messy redirecting for the user as they browsed the site though. Not a great solution. Another solution I was considering was just executing wp-cron.php from a cronjob every hour. Something like this:
0 * * * * /home/yourdomain/htdocs/wp-cron.php >/dev/null
Advanced WordPress Development
(Free Pro Tips Delivered Via Email)
Learn from my many years of experience (since 2004) working with WordPress, from hosting, to developing themes and plugins. I'll share my best tips and techniques with you via email.
Prefer RSS? Subscribe to my news feed