WordPress cron作业会减慢页面加载速度吗?


8

如果用户访问某个站点并且他的访问触发了一项非常繁重的Cron作业,那么页面加载速度对他来说会较慢吗?据我了解,页面在加载之前不会等待cron作业执行,但是由于cron作业将并行运行,因此由于服务器繁忙,页面加载速度仍然可能会变慢吗?


阅读有关spawn_cron的内容,这可能对您有所帮助:codex.wordpress.org/Function_Reference/spawn_cron
TomC 2013年

如果您的cron任务足以使服务器繁忙,那么它就足以使服务器繁忙。我不太了解您的问题-确认吗?
拉斯特2013年

是的,我只是想确认一下,因为我一直在阅读页面加载和cron作业独立运行,因此页面加载不受影响。但是,如果您说cron作业很繁重,则会产生副作用,影响页面加载。
urok93 2013年

Answers:


10

简短回答- 。任何页面请求都会初始化计划的队列。这只是一个初始化请求。WP-CRON请求是一个独立的请求。

因此,请求URL /somepage只需初始化请求即可/wp-cron.php

但是-如果cron事件不能很好地工作(例如有1000个数据库查询,或者它请求一个真正响应时间很长的资源),或者两者兼而有之,或者为每个请求重新安排cron事件……其他http请求将占用资源,CPU性能,内存等...如果它占用了足够的资源,则您的页面会变慢。


9

在大多数情况下,简短的答案实际上是肯定的

首先,在大多数设置中,生成cron作业会导致页面加载延迟1秒,因为它是通过具有1秒超时的回送HTTP请求完成的-请参阅https://wordpress.org/support/topic/save一个完整的第二次执行cron /

其次,生成的作业现在将与页面加载争夺数据库访问权限(以及其他资源)。多个进程可以同时读取数据库;但是,无论何时将进程写入数据库,默认情况下都会将其锁定以防止任何其他进程同时进行写读访问-请参见/programming/1005206/does-sqlite-lock-the-database -file-on-reads#answer-1005218。这的影响取决于cron作业的数据库更新的复杂程度以及数据库实际锁定的时间(可能不重要)。当然,如果在请求页面时恰好正在运行cron作业,那也将是一个问题,但是保证在页面加载时产生cron作业 它们至少会影响该页面的加载。

如果您的服务器/主机允许,建议您使用以下命令将计划的cron作业设置为每隔几个小时运行一次

php -q /path/to/wp-cron.php

并在页面加载中禁用cron生成,并在中输入以下内容wp-config.php

define('DISABLE_WP_CRON', true);

1
这是真正的答案。
ILikeTurtles '17

根据这篇文章,1URL延迟发生在7.15.5以下的cURL版本上。它适用于7.15.5及更高版本的curl版本。7.15.5于2006年8月发布。除了非常老的设置外,不再有1秒的超时时间。
user63350 '19


@ user63350 cURL确实如此,但WordPress并非如此。摘自文章:“类WP_Http_Curl将小数超时调整为一整秒(即使cURL支持)。” 即使在最新的WordPress(5.2.2)中,超时仍为1秒,因此该问题在所有设置中都存在,包括最新的。
杰克

实际上,#33055在WordPress 4.6中修复了1秒超时问题。(在代码库展望是混淆作为旧代码仍然存在,包括private方法,如WP_Http::_dispatch_request现在被永远不会被调用。)
杰克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.