我今天早上收到一封电子邮件,说我的Wordpress网站已经自动更新到最新版本。我知道这个功能,但我一直想知道它到底是如何工作的。
PHP不是一个永久运行的进程:它只在请求时运行。据我所知,Wordpress只能在有人加载网页时进行自我更新。但是更新过程并不是即时的,因此访问该网站的用户肯定会有一个非常慢的页面加载。
他们是否有不同的技巧用于自动更新?我找遍了这个地方,但没有找到任何解释。
我今天早上收到一封电子邮件,说我的Wordpress网站已经自动更新到最新版本。我知道这个功能,但我一直想知道它到底是如何工作的。
PHP不是一个永久运行的进程:它只在请求时运行。据我所知,Wordpress只能在有人加载网页时进行自我更新。但是更新过程并不是即时的,因此访问该网站的用户肯定会有一个非常慢的页面加载。
他们是否有不同的技巧用于自动更新?我找遍了这个地方,但没有找到任何解释。
PHP不是一个永久运行的进程:它只在请求时运行。据我所知,Wordpress只能在有人加载网页时进行自我更新。但是更新过程并不是即时的,因此访问该网站的用户肯定会有一个非常慢的页面加载。
他们是否有不同的技巧用于自动更新?我找遍了这个地方,但没有找到任何解释。
您在这里寻找的系统称为“WP Cron”。它是WordPress中的后台处理系统,允许事件在正常处理之外发生。它们仍然需要一个触发器来启动,但它们不会因为后台进程而干扰页面加载。
所以是的,必须有人加载你的页面。在默认过滤器中禁用。php文件,您会发现以下代码行:
add_action( \'init\', \'wp_cron\' );
Spawn cron有两种可能的操作方法,但第一种也是最常见的方法是调用wp\\u remote\\u post函数,在wp cron的URL上建立回自身的连接。php。通过发出这个额外的HTTP请求,它将启动另一个PHP进程来完成所有实际工作。它在这里发出的请求是非阻塞的,超时为0.01秒。所以,它实际上没有得到任何结果。请求的目的只是在后台启动一个新流程。完成后,它会简单地返回,因此查看用户不会有任何延迟。
wp cron。php过程是实际工作、更新和其他一切的基础。WordPress中的许多进程都是由cron系统处理的。计划的后期发布、处理ping、更新检查,以及需要在正常流程之外发生的任何事情都可以进行计划,然后根据需要运行。
但是,是的,对网站的正常点击一定会启动这个过程。不,WordPress。org不会直接联系您的站点来启动它,您的站点必须接收某种形式的流量才能启动它。任何形式的交通都可以。
实际上,自动更新是从wp.org
. 更新过程仍在您的站点上运行,但在后台通过wp-cron
.
当一个新的次要更新发布时,WordPress的人员开始发布更新。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.
(谢谢你@otto指出我的错误措辞:)
wp.org
对于新版本(通常每天使用两次wp-cron
), rolloutserver知道有多少站点需要更新。然后,该卷展开始,开始缓慢-128个站点中有1个自动更新。这一点正在被监控,如果成功率表明推出没有问题,更多的站点会得到自动更新(通常下一步是64个站点中的1个,并继续以这种方式增加),直到所有自动更新都交付为止。
这使开发人员能够在出现任何问题时停止卷展,但是3.8
到3.8.1
成功率为100%。
由1 out of 128
实际上是随机的。嗯,不是真的,但如果你想知道,它是这样工作的:
需要更新的站点的Url使用MD5
. 仅使用此哈希的前三个字符并将其转换为base10
, 这导致了4096种可能性。已为计算出的数字介于0和31之间(4096/32=128)的站点启动更新。
好吧,我想这毕竟是非常随机的;)
在我的情况下,因为我运行了很多WordPress网站,更新花了1天时间——很有趣,当所有页面都更新时。
万一你想知道:D
顺便提一下here 是一篇关于制造的文章。wordpress。描述过程的组织,正如它发生的那样。
从广义上讲,当用户访问站点时,wordpress会检查计时器是否过期以及是否检测到过期another 请求被发送到服务器以“运行”与过期事件关联的操作。这就是为什么当服务器在一个单独的进程中运行实际操作(本例中为升级)时,用户不会感到页面加载有任何明显的延迟。
这是可行的,但计时不是很准确。你的网站流量越大,它就越准确。
想要获得更好的性能和更准确的计时的人可以阻止wordpress的内部cron“进程”,并使用OS cron进程触发计时器的检查。
我有以下情况:我将这个纯HTML主题(使用引导CSS框架)带入WordPress主题。这是原始的纯HTML演示主题(我有完整的源代码,因为这是一个可下载的示例):http://www.html.it/guide/img/bootstrap/demo/home.html这是我个人正在研究的WP主题:http://onofri.org/WP_BootStrap/正如您所看到的,与最初的演示网站和我的个人WP主题唯一的区别是,在第二个演示中,标题中的幻灯片(使用flexslider JQuery插件制作)没有显