WordPress禁用WP cron优化定时执行功能

自然 2019年6月2日16:13:09 评论 99

wordpress经常会需要在后台设置一些定时任务,这些任务又是如何触发并执行的呢?wordpress在每次用户访问页面的时候,会在后台自动执行WP cron定时任务检测,查看是否需要执行某些操作。这在使用中就会造成一些奇怪的问题。

  • ①执行检测并运行会占用CPU资源,如果网站访问量巨大的时候,可能会执行N多检测,大量占用服务器资源,严重的话可能造成服务器宕机。
  • ②如果像自然这种基本没什么人访问,或者访问量小,或者设置了优化缓存,那么就会造成任务无法被正确执行,最糟糕的情况是优先访问缓存,直接不出发WP cron定时执行功能。

Wordpress禁用WP cron优化定时执行功能
为了协调这个问题。我们提供一种新的思路,我们禁用wordpress访问时自动触发,然后采用服务器定时自动触发WP cron定时执行功能。

这样可以控制WP cron定时执行功能不会占用太多cpu资源,并且高效的被执行。

通过善用搜索引擎,我们找到了方法。

首先需要在wordpress站点根目录下的wp-config.php中添加如下代码,以达到禁用效果。

define('DISABLE_WP_CRON', true);

然后我们使用服务器的crontab功能添加定时触发任务,执行crontab -e,按i,然后再下面加入一行代码。

*/10 * * * * curl https://www.wanvi.net/wp-cron.php?doing_wp_cron  > /dev/null 2>&1

这里我们设置每隔10分钟触发一次执行,你可以根据自己的需求进行调整。> /dev/null 2>&1是不输出任何log日志文件,可以降低服务器硬盘占用,如果你需要进行日志记录,可以将它更改为>> /tmp/test.txt,这里要求输入日志存储的绝对路径。

如果你使用的是虚拟主机,那么可以使用第三方提供的监控服务,例如360云监控。监控网址格式如下:

https://www.wanvi.net/wp-cron.php?doing_wp_cron

这里我们优化了Wp cron的触发方式,优化了cpu和内存的开销,但是我们依然无法避免一些无效的wp cron定时任务。经常安装各种(缓存)插件,许多插件都会为自身性能而去添加一些Wp cron定时任务,当我们卸载插件后这些定时任务并不会被完整移除,这就造成了WP cron定时任务的无用功,运行一些没有实际意义的定时任务,不仅造成了用户体验的下降,还造成了以写没有必要的cpu和内存的性能消耗。

对于wordpress性能优化感兴趣的小伙伴可以看一下我的另一篇文章“WordPress移除无效的 WP-Cron 定时任务

weinxin
网科文媒
快来关注一下,你想要的这里都有喔!
自然

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: