当前位置: 首页>>建站开发>>正文


自动更新究竟如何运作?

webfans 建站开发 , , 去评论

问题描述

我今天早上收到一封电子邮件,说明我的Wordpress网站已自动更新到最新版本。我知道这个功能,但我总是想知道它是如何工作的。

PHP不是permanently-running进程:它只在请求时运行。据我所知,Wordpress只能在有人加载网页时自行更新。但是更新过程不是即时的,因此访问该站点的用户肯定会有非常慢的页面加载。

他们使用不同的技巧进行自动更新吗?我在各处搜索过但没有找到任何解释。

最佳解决思路

PHP isn’t a permanently-running process: it only runs when requested. So as far as I can tell, WordPress can only update itself when someone loads a web page. But the update process is not instantaneous, so surely a user visiting the site would have a really slow page load.

Is there a different trick they use for automatic updates? I’ve searched all over the place but haven’t found any explanation.

您在这里寻找的系统称为”WP Cron”。它是WordPress中的后台处理系统,允许事件在正常处理之外发生。他们仍然需要触发器来启动它们,但由于后台进程,它们不会干扰页面加载。

是的,有人必须加载你的页面。在default-filters.php文件中,您将找到以下代码行:

add_action( 'init', 'wp_cron' );

因此,在每个页面加载时,wp_cron函数都会运行。此功能在wp-includes /cron.php中结束,它的作用是检查数据库中的预定事件。如果有任何进程需要在后台运行,则它调用函数spawn_cron。

Spawn cron有两种可能的操作方法,但第一种也是最常见的方法是调用wp_remote_post函数,在wp-cron.php的URL上建立连接回自身。通过发出这个额外的HTTP请求,它启动另一个PHP进程来完成所有实际工作。它在这里发出的请求是non-blocking,超时为0.01秒。所以,它实际上并没有得到任何结果。请求的目的只是在后台启动一个新进程。完成此操作后,它只会返回,因此查看用户永远不会有任何延迟。

wp-cron.php进程是实际工作,更新和其他所有内容。 WordPress中的许多进程由cron系统处理。可以安排预定的发布,处理ping,更新检查,以及在正常流程之外发生的任何事情,然后在as-needed的基础上运行。

但是,是的,对网站的正常打击确实必须启动这个过程。不,WordPress.org没有直接联系您的网站以启动,您的网站必须接收某种形式的流量才能启动它。任何形式的交通都可以。

次佳解决思路

实际上,从wp.org推送自动更新。更新过程仍在您的站点上运行,但在后台通过wp-cron运行。

当一个新的次要更新发布时,WordPress的人开始推出更新。在您的站点检查wp.org以获取更新,理论上可用更新以及随机选择您的站点进行更新后,将启动实际更新过程。


(Thank you @otto for pointing out my wrong wording 🙂 )


由于每个站点都使用wp.org检查新版本(通常使用wp-cron每天两次),因此rolloutserver知道有多少站点需要更新。

然后开始,从缓慢开始 – 128个站点中的1个自动更新。这是受监控的,如果成功表明推出没有问题,则更多站点获得自动更新(通常下一步将是64个中的1个,并继续增加该方式),直到所有自动更新都已交付。

这使得开发人员可以在出现任何问题时停止推出,但从3.83.8.1的最后一次更新具有100%的成功率。

1 out of 128选择的站点实际上是随机的。嗯,不是真的,但如果你想知道,它的工作原理如下:

需要更新的站点的Url使用MD5进行哈希处理。仅使用此哈希的前三个字符并将其转换为base10,这将产生4096种可能性。对于具有0到31之间的计算数字(4096/32 = 128)的站点,更新开始。

好吧,我猜它毕竟是随机的;)

在我的情况下,当我运行很多WordPress网站时,更新需要1天 – 看到所有页面都更新时非常有趣。

万一你想知道:D

顺便说一句,here是一篇关于make.wordpress.org的文章,描述了这个过程。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2688.html,转载请务必附带本地址声明。