Actually, the automatic update is pushed from wp.org
. The update process still runs on your site, but in the background via wp-cron
.
When a new minor update is released, the guys at WordPress start to roll out the update. The actual update process is started after your site checked wp.org
for updates, an update is theoretically available, and your site is chosen by random to be updated.
(Thank you @otto for pointing out my wrong wording :) )
As every site checks with wp.org
for new versions (usually twice dayily using wp-cron
), the rolloutserver knows how many sites need an update.
Then the rollout begins, starting slowly - 1 out of 128 sites gets updated automatically. This is being monitored, and if the successrate indicates no problems with the rollout, more of the sites get the automatic update (usually the next step would be 1 out of 64, and continuing to increase that way) until all automatic updates are delivered.
This enables the developers to stop the rollout if any problems occur, but the last update from 3.8
to 3.8.1
has had a 100% success rate.
The sites selected by the 1 out of 128
is actually random. Well, not really, but if you want to know, it works like this:
The Url of the site needing an update gets hashed using MD5
. Using just the first three characters of this hash and converting it to base10
, this results in 4096 possibilities. The update started for sites having a calculated number between 0 and 31 (4096 / 32 = 128).
Okay, i guess it's pretty random after all ;)
In my case, as I run a lot of WordPress sites, the updates took 1 day - was pretty funny to see when all the pages were updated.
Just in case you were wondering :D
btw, here is an article on make.wordpress.org describing the process, as it happened.