wp-cron 的实现原理
简单的说,wp-cron 会被每个页面加载, 也就是用户访问的时候,都会去检查有哪些任务要执行,非常浪费性能,最重要的是不确定会不会执行。
相信有很多人跟我一样,网站访问量不高,这种依赖用户访问来触发的机制,实在没法满足
1. 禁用用户自动触发
在配置文件 wp-config.php 里添加:
define('DISABLE_WP_CRON', true);
2. 通过系统的 crontab 来触发 wp-cron,这样做的好处是,系统一定会按时去执行,不依赖用户的访问了。同时只会被触发一次,而不是每个用户访问都要来检测浪费性能。
在 Linux 命令行输入:
crontab -e
然后会打开系统的 cron 服务编辑,有的系统可能会问你用哪种编辑器,推荐选择 vim 或者 tinyvim。
然后加入一行
* * * * * curl https://example.com/wp-cron.php >> /dev/null 2>&1
什么意思呢,就是每分钟,系统都会去请求一次 wp-cron.php 这个文件,注意替换你的域名。 >> /dev/null 2>&1 意思是忽略响应的结果,我们不需要保存日志。
为什么是每分钟呢,我明明想一个小时运行一次啊。因为 wordpress 自己会判断何时执行任务,我们要做的就是及时的去触发他。况且系统一分钟只会访问一次,不会造成压力的。不仅提高了性能,还让任务能及时执行。
3. 我的空间无法执行命令,或者我的系统是 windows,怎么办?(即使是 Linux 系统,也推荐这种方式,管理真的很方便)
这个时候只能依赖第三方的工具了,这里我推荐2个有免费套餐的
- webcron.org 这个在国外用的比较多,界面不太好看,最重要的是,没有免费套餐。
- URLCron 这个使用很简单,界面简洁美观,可以查看运行的状况和结果,管理很方便。还有免费套餐,完全够用。
可以看到,添加任务只需要填入我们 wp-cron.php 的 URL 即可以,然后保存,其他的用不上,不用管。然后每次运行的记录都会被保存,再也不用怀疑任务没运行了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)