1. 首页
  2. 网站建设

优化wordpress wp-cron计划任务,解决execution timed out问题。

根据前面一篇文章“Linux VPS服务器内存不够用的情况”中所述内容修改后,mysql就没有出现定时重启的情况,php进程也没有无故被kill了。不过现在在执行wp-super-cache预缓存任务的时候有时候仍然会提示失败,查看php日志后发现wp-cron进程因为超时被终止。

日志内容类似如下:

php-fpm.log

首先我们看看wp-cron.php是什么?和linux中的cron意思差不多,用于执行wordpress的一些计划任务,比如检查wordpress、主题和插件的更新,定时发布文章,执行插件的一些定时任务等。不过和linux的cron不一样的是wp-cron的触发需要用户点击访问。比如wordpress计划2:00开始任务,但是知道3:00你的博客才有人访问,那么2:00的这个任务就会在3:00才会执行。对于高访问量的网站来说,这个影响可能会比较大。

了解了wp-cron.php的作用后,接下来就需要解决他的超时问题。为了安全考虑,我不推荐修改php-fpm.conf中的request_terminate_timeout参数。如果你把这个只设置成永远不会超时,那么某个php程序可能因为问题永远不会自己结束。

最后,我决定先把wp-cron.php关闭,然后用linux自带的crontab实现。

1、关闭wp_cron功能

在wp-config.php中添加如下代码

define('DISABLE_WP_CRON', true);

2、配置crontab

*/5 * * * * cd /home/wwwroot/blog.nbhao.org;/usr/bin/php -q wp-cron.php

这里一定要先进入网站的根目录,然后执行,因为执行时wp-cron.php加载根目录下的文件。

上面这个php执行的时候以PHP-CLI方式运行,这个模式没有超时限制。

配置好后,我再次查看php日志,暂时没有发现超时信息。当然如果为了优化wordpress,你也可以考虑把wp自带的cron关闭。

参考连接:

Linux VPS服务器内存不够用的情况

Better wp-cron using linux’s crontab

原创文章,作者:章郎虫,如若转载,请注明出处:http://www.szl724.com/website/1985.html

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code