Answers:
使用服务器的cron作业运行WP CRON没有任何缺点。实际上,这是推荐的做法。
WP-Cron无法连续运行,如果某些关键任务必须按时运行,则可能会出现问题。有一个简单的解决方案。只需将系统的任务计划程序设置为在所需的时间间隔(或在所需的特定时间)运行。
为此,您需要首先在中禁用默认的cron行为wp-config.php
:
define('DISABLE_WP_CRON', true);
然后,wp-cron.php
从服务器计划。对于Linux,这意味着:
crontab -e
但是,不要在命令行(CLI)中运行它,而是将其作为HTTP请求运行。为此,您可以使用wget
:
*/5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cron
WordPress wp-cron.php
使用以下代码加载所有必需的核心文件,插件等:
if ( !defined('ABSPATH') ) {
/** Set up WordPress environment */
require_once( dirname( __FILE__ ) . '/wp-load.php' );
}
因此,不必担心WordPress无法加载重要功能。
define('DISABLE_WP_CRON', true);
仅禁用cron进程的那部分,然后*/5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cron
在服务器上使用以下代码调用cron脚本:确保服务器上的cron作业已执行。任何调度插件都不会知道两者之间的区别。
有两个缺点:首先,当使用wp-cron.php作为cli时,没有设置$ _SERVER变量。人们通过使用对wp-cron.php的curl请求克服了这一限制。
其次,由于WP本身未加载wp-cron.php;如果您使用SMTP邮件程序插件,则在调用wp-cron时不会加载该插件。同样,使用curl调用会覆盖此问题。卷曲似乎是最常用的方法。
然而; 我更喜欢在正确设置postfix中的邮件设置和(对于nginx)php-fpm config并设置crontab之后使用wp-cli
*/5 * * * * wp cron event list --skip-plugins --skip-themes --path="/var/www/vhosts/example.com/httpdocs/wp" --fields=hook,next_run_relative --format=csv | awk -F, '$2=="now" {print $1}' | xargs -r wp --path="/var/www/vhosts/example.com/httpdocs/wp" cron event run $1
(以csv格式列出具有特定字段的所有cron-钩子是cron的名称,相对于下一次运行是时间。使用AWK去除显示“ now”作为下一次运行(现在到期)的代码,将该列表传递给xargs到呼吁wp cron event run $HOOK
各的cron)使用WP-CLI负载WordPress的正确(我选择跳过插件上市crons时,由于代码的错误及PHP警告会搞砸了脚本输出;但使用了xargs的cron的时候不要跳过他们, cron可能需要加载插件)
希望这能为您提供一些注意事项。
有许多原因不禁用wp-cron。实际上,几乎不可能找到用例来做到这一点。它不会减慢您的网站速度,它用于您可能不知道的事情。
许多插件都使用WP-Cron来安排工作。如果您关闭调度程序,它们可能会造成混乱。
关于此主题的教程激增,因为它令人困惑,并且因为禁用它对您的网站没有多大作用。它将导致开发人员头疼,他们必须修复六个月内所产生的神秘问题。
此外,WP Heartbeat在管理区域每15秒触发一次,为99%认为有此问题的人解决了此问题。
我还没有发现将wp-cron卸载到外部服务的真正弊端。现在已经这样做了很多年。
特别是在当今世界中,您可以将应用程序作为微服务运行。
我为每个WordPress组件使用单独的Docker容器-php,web,db,crontab,redis等)。将crontab作为单独的容器,使用本地网络通过http调用wp-cron,仅在需要时运行。
通过减少攻击面,这可以减轻后端节点的压力并提高安全性。
如果开发人员无法在每次页面加载时都不必调用wp-cron的情况下弄清楚该怎么做,那么,这代表了他的经验不足。“不理会”,因为您不了解事情的运作方式,不是保持它的好理由。
wget http://YOUR_SITE_URL/wp-cron.php
未添加的情况下进行了提及?doing_wp_cron
因此,一个文档比另一个文档更好吗??doing_wp_cron
非版本不添加的功能是什么?