优化wordpress wp-cron计划任务,解决execution timed out问题。
根据前面一篇文章“Linux VPS服务器内存不够用的情况”中所述内容修改后,mysql就没有出现定时重启的情况,php进程也没有无故被kill了。不过现在在执行wp-super-cache预缓存任务的时候有时候仍然会提示失败,查看php日志后发现wp-cron进程因为超时被终止。
日志内容类似如下:
首先我们看看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关闭。
参考连接:
https://zhangnq.com/1979.html
https://rtcamp.com/tutorials/wordpress/wp-cron-crontab/
-
还没有Trackbacks
这个wp-cont很重要呢
恩,我网上搜了下已知可能会对检查更新、定时发布和一些插件有影响,不过通过linux的crontab手动执行wp-cron应该没问题。
过来学习的