WordPress 的有个进程专门用来在将来的某个时间点执行特定任务,例如发布某篇文章,通过 Backwpup 全自动备份 WordPress博客到 Dropbox,这个功能的 WordPress 是通过 WP-Cron 实现的。

WordPress 计划任务.jpg

很不错的功能,但是也带来了一系列的问题。

什么是 Cron ?

Cron 是一个 linux 下的定时执行工具,可以在无需人工干预的情况下运行作业。 Cron 同时也是一个守护进程, 意思是会一直在后台运行。

什么是wp-cron.php?

这个文件包含了一些 php 脚本, 会执行所以定时任务, 例如:

定时发布文章 定时检查垃圾评论(前提是你开启了 Akisment) 发送邮件(需要设置好评论设置)

wp-cron.php只是 WordPress 自动化机制的一部分. 为什么说wp-cron.php会造成问题? 如果你在firebug下查看的话, 就会发现, wp-cron.php在每次页面加载时都会被调用, 比方说你的网站每小时有30个访客, 每人查看2-3个页面, 看看wp-cron.php被调用了多少次:

30×2.5=75 次/小时 75×24=1800次/天 1800×30=54000次/月

后果是什么自然不用多说, 这不仅会影响你自己的网站, 整个服务器上的其他网站都会受到影响, 整个服务器的性能降低。 问题还远不止这些, 另外比如定时发布的文章没有自动发布, 或者定时功能完全没有生效等. 从 WordPress 3.X以来, ​​这些问题已经慢慢减少了, 但是依然还是存在的.

怎么解决问题?

让我们来禁用这个无用的功能, 来减少 CPU 占用, 降低服务器负载。 在wp-config.php中插入下面的代码就可以禁用掉:

define('DISABLE_WP_CRON', true);

然后我们来使用linux下真正的 Cron 功能吧。

PS:cPanel和Directadmin面板的Cron设置方法都很简单,不用教了吧。