WordPress定时任务(wp-cron.php)造成主机CPU超标解决办法
WordPress的定时任务功能我们经常用到,例如Wordpress的定时备份、定时发布文章等,在Wordpress中是靠wp-cron.php来实现这些功能的。用wordpress,离不开各种插件,但许多插件都会为自身性能而去添加一些wp-cron定时任务,当我们卸载插件后,这些定时任务并不会被完整移除,会有一些残留。久而久之,wordpress就会经常运行一些没有实际意义的定时任务,造成资源占用较高的情况。如果后台有很多的这种定时任务,就很容易出现cpu占用超标而宕机的情况。
原来,在使用了wp-super-cache缓存插件的时候,后台会有很多wp-cron.php的调用,每一次访问页面都会调用,这样就容易出现cpu超标的情况了。
知道了原因,解决起来就方便了。首选方式是移除这些无效的wp-cron定时任务,来优化wordpress的性能。在当前主题的function.php文件里面添加如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
//移除无效的wp-cron定时任务 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' ); } |
如果移除无效任务还不行,也可以干脆来个釜底抽薪,禁用定时任务,编辑wp-config.php,加入一行:
注意:在第30-40行加入,否则可能不生效。
1 |
define('DISABLE_WP_CRON', true); |
这样就把定时任务功能给禁用掉了,但同时数据库定时备份、定时发表文章等功能也不能用了。如果确需要以上功能,可通过服务器crontab设置定时访问wp-cron.php来执行定时任务,在后台系统的crontab文件里,增加如下的代码:
1 |
*/15 * * * * YOUR_USER /usr/bin/wget -q --post-data '' http://your_site/wp-cron.php?doing_wp_cron -O /dev/null |
即每15分钟,调用wget命令访问站点的wp-cron.php文件,post-data参数指示wget用POST方法,而不是GET方法,这样可以避免缓存插件影响后台任务的正确执行,但post-data传输的数据必须是空内容,否则wp-cron.php会拒绝执行。
或者在系统的crontab中添加如下代码:
1 |
0,30 * * * * php -q /path_to_your_site/public_html/wp-cron.php |
或者用宝塔的计划任务添加
根据第三方监控服务的设置,每隔一定的时间就运行一下wp-cron.php,这样就又可以进行定时发布文章了。
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » WordPress定时任务(wp-cron.php)造成主机CPU超标解决办法