Reason (The Problem)
While setting up automated off-site backups with UpdraftPlus (connecting Google Drive as remote storage), a pattern emerged: every backup job — manual or scheduled — would reliably stall partway through, usually during the Themes or Uploads zip stage. Each stall showed the same signature in the UpdraftPlus log: a “next resumption” counter stuck at a negative number, meaning the job was waiting for WordPress to resume it and nothing was calling it back.
The root cause traced back to how WordPress handles scheduled tasks. WP-Cron isn’t a real system cron job — it’s a pseudo-cron that only fires when a visitor loads a page on the site. On low-traffic periods (like 10 PM on a Friday night watching a backup crawl), nothing was hitting the site, so WP-Cron never woke up to resume the multi-step backup process. Confirmation came two ways: WordPress’s own dashboard flagged “6 past-due actions” in Action Scheduler (used by WPForms, WP Mail SMTP, and others), and the Scheduled Actions table showed a queue that only began processing the moment the page was loaded — proof the trigger was purely visit-dependent, not time-dependent.
Making it worse: the managed Network Solutions “WordPress for Entrepreneurs” hosting package doesn’t expose a traditional cPanel or server-side cron job interface, which ruled out the standard fix of adding a real cron entry directly on the host.
Process (The Fix)
- Diagnosed the stall pattern across multiple manual backup attempts, ruling out local machine resource contention (a background VMware VM was suspected and shut down, but the stall persisted — confirming it was server-side, not local).
- Confirmed the root cause via WordPress’s own “scheduled tasks are overdue” warning and the Action Scheduler admin table, which showed pending WPForms/WP Mail SMTP/Action Scheduler housekeeping tasks stuck for over two days.
- Ruled out native cron access by checking the Network Solutions hosting panel (WordPress → Website Details → SFTP Account Manager) — no cPanel-style Cron Jobs section existed on this managed tier.
- Set up an external cron pinger using the free tier of cron-job.org: a scheduled job hitting
https://ny2honolulu.com/wp-cron.php?doing_wp_cronevery 15 minutes (*/15 * * * *), independent of any site visitor traffic. - Disabled WordPress’s self-triggered pseudo-cron by editing
wp-config.phpdirectly via SFTP:- Connected with
sftp ftpwwlqkp@ftp-bb91820e.registeredsite.com - Downloaded and backed up the original file (
cp wp-config.php wp-config.php.bak) - Added
define('DISABLE_WP_CRON', true);just above the/* That's all, stop editing! */marker - Re-uploaded via
put wp-config.php
- Connected with
- Verified the live site still loaded normally post-edit (no critical error, no white screen) before considering the fix complete.
Outcome
- Scheduled UpdraftPlus backups (Weekly Files / Daily Database, remote-synced to Google Drive) now run independently of site traffic — confirmed by an unattended overnight database backup completing successfully and emailing a report at 2:52 AM.
- WordPress’s real-time task queue is no longer visitor-dependent; Action Scheduler tasks and future backup jobs should clear on their own within their scheduled windows instead of stalling indefinitely.
- The fix required no hosting upgrade and no plugin changes — just one external free-tier cron service plus a single-line
wp-config.phpedit, made safe by taking a local backup before touching the live file.