在wordpress系统中,一些定时任务是使用cron定时检测,会产生占用CPU,当访问过大时候会执行多次检测,占用服务器资源,甚至会宕机。如果网站流量小,或者设置了缓存优化,又会无法执行,或者不触发wordpress的cron任务。
采取办法:使用服务器crontab功能
Crontab定时任务设置应该算是比较常用的工具之一,比如我们需要设置定时重启机器、备份、定时执行脚本等任务的时候需要用到。
我们采取禁止wordpress访问自动触发,改用云服务器crontab定时触发wordpress的cron功能。
Linux Crontab 查看定时任务启动没。
确认服务器是否开启定时任务计划服务
命令:service crond status
service crond start
crontab -e 编辑定时任务(新增)
crontab -l 查看定时任务
#查看crontab状态
tail -f /var/log/cron
需要在wordpress站点根目录下的wp-config.php中添加如下代码,达到禁用cron。
define('DISABLE_WP_CRON', true);
我们使用服务器的crontab功能添加定时触发任务,执行crontab -e,按i,进入编辑模式,然后再下面加入一行代码。
0 0 * * * /usr/bin/php /data/taizidian.cn/wp-cron.php >> /wwwlogs/cron.log
按键Esc一次并输入“:wq”,就是退出编辑并保存文件。
这样wordpress的定时任务就不会随时被触发,而是交给服务器,每天执行一次,大大减少服务器资源消耗。
可以完成下面这个步骤
在网站的conf文件添加
#禁止访问wp-cron.php文件
location ~* /wp-cron.php
{
allow 127.0.0.1; #本地IP
allow 8.8.8.8; #服务器IP
deny all;
}
到此完成优化步骤。
其他举例说明:
*/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,这里要求输入日志存储的绝对路径。
*/1 * * * * /usr/bin/php -f /home/wwwroot/domain.com/wp-cron.php >/dev/null 2>&1
这行crontab代码的意思是每隔1分钟自动执行domain.com下的wp-cron.php文件一次,你可以根据自己的wp-cron.php实际位置修改以上代码。/dev/null 2>&1的意思是将标准输出和错误输出均定向到回收站,这样就不会在服务器上产生大量的垃圾文件了。
更多说明:
有的插件使用,就算删除插件后会有残留,其中也包括WP cron定时任务,也可以直接移除无效的WP-cron定时任务,在主题的函数文件function.php添加如下代码。
add_action('wpjam_remove_invild_crons', 'wpjam_remove_invild_crons');
function wpjam_remove_invild_crons(){
global $wp_filter;
$wp_crons = _get_cron_array();
foreach ($wp_crons as $timestamp => $wp_cron) {
foreach ($wp_cron as $hook => $dings) {
if(emptyempty($wp_filter[$hook])){
foreach( $dings as $sig=>$data ) {
wp_unschedule_event($timestamp, $hook, $data['args']);
}
}
}
}
}
if(!wp_next_scheduled('wpjam_remove_invild_crons')) {
wp_schedule_event( time(), 'daily', 'wpjam_remove_invild_crons' );
}
完成。
crontab一些命令
查看当前用户的crontab:
crontab -l
想要新增或编辑任务
crontab -e
删除定时任务
crontab -r
crontab的日志位置一般位于/var/log/cron,利用下面的语句即可查看日志
tail -f /var/log/crond
尤其是设置Crontab定时任务的时间节点,会去参考一些已有的时间定时格式然后进行修改。这里正好看到这个crontab.guru在线工具,可以较为准确、直观的设置crontab时间点。
Crontab在线工具地址
工具地址:https://crontab.guru
示范:https://crontab.guru/examples.html,这里有许多,可以选择合适自己网站的,使用起来。
安装提示:
centos系统安装Crontab
yum install vixie-cron crontabs
#设置开机启动Crontab
chkconfig crond on
#启动Crontab
service crond start
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫