Ticks
Snapshotify does the work in ticks: short bursts of roughly twenty seconds, each saving its progress before ending. A backup moves through stages: initialize, dump the database, scan files, archive them, finalize. Each tick advances as far as it can within its budget and writes state to disk. The next tick picks up exactly there.This is why a backup interrupted by a PHP timeout resumes rather than restarting, and why a very large site completes on hosting that would never allow one long request.
Three things drive it
Deliberate redundancy: hosts break these in different ways, so Snapshotify uses all three.1
Loopback requests
The site makes an HTTP request to itself to trigger the next tick, chaining until the job is done. Fast, and the primary mechanism.
2
A cron watchdog
A WordPress cron event re-arms itself roughly every minute while a job is running, advancing anything that has stalled.
3
Inline ticks from the admin screen
While the Backups page is open, its progress polling also advances the job.
When loopback is blocked
Many hosts, and nearly every local development environment, block a site from making HTTP requests to itself. The visible symptom is a backup that progresses only while the Backups page is open, then appears to stall when you navigate away.Why this shape
Two alternatives, and why they are worse.
Ticks with saved state give resumability for free. Nothing is lost to an interruption beyond the seconds since the last save.
What this means for you
You can close the tab during a backup
You can close the tab during a backup
The job continues. Reopen the Backups page to see where it got to.
Do not close the tab during a restore
Do not close the tab during a restore
Different situation. A restore replaces the site underneath itself, and you want to be watching. The plugin says so on screen.
A stalled job usually is not stuck
A stalled job usually is not stuck
If progress stops, the loopback chain has probably broken. Open the Backups page and leave it open; its polling advances the job.
Cancelling is immediate and clean
Cancelling is immediate and clean
The job stops and its working files are removed. No notification, since you already know.
Where the work happens
Working files live inwp-content/uploads/snapshotify/tmp/{id}/, including the state file that makes resuming possible. They are removed when the job finishes or is cancelled.
Leftover directories in
tmp/ after a hard crash are safe to delete. They belong to jobs that will never resume.Tuning it
Developers can extend the completion budget for scheduled backups:Hooks reference
Every filter and action, including the pipeline and storage ones.
Progressify
Generatify
Lightify
Rankify
Snapshotify