Devo desativar WP_CRON e, em vez disso, desencadear wp-cron.php do servidor a cada poucos minutos?

Parece que o WordPress desnecessariamente triggers o WP CRON em cada carga de página. Estou pensando, em vez de executá-lo em todas as visitas, por que não apenas agendá-lo para ser executado a cada 5 minutos via servidor? Eu poderia simplesmente desencadear wp-cron.php a cada cinco minutos e alcançar o resultado desejado?

Existe alguma desvantagem para isso?

Solutions Collecting From Web of "Devo desativar WP_CRON e, em vez disso, desencadear wp-cron.php do servidor a cada poucos minutos?"

Não há desvantagem para executar o WP CRON usando os trabalhos cron do servidor. Na verdade, esta é a prática recomendada.

De acordo com o documento oficial de desenvolvimento do WordPress Plugin :

O WP-Cron não é executado continuamente, o que pode ser um problema se houver tarefas críticas que devem ser executadas no tempo. Existe uma solução fácil para isso. Basta configurar o agendador de tarefas do seu sistema para executar nos intervalos desejados (ou no tempo específico necessário).

Para fazer isso, você precisa primeiro desabilitar o comportamento cron padrão em wp-config.php :

 define('DISABLE_WP_CRON', true); 

Em seguida, programe o wp-cron.php do seu servidor. Para Linux, isso significa:

 crontab -e 

No entanto, em vez de executá-lo na linha de comando (CLI), execute-o como uma solicitação HTTP. Para isso você pode usar o wget :

 */5 * * * * wget -q -O - https://your-domain.com/wp-cron.php?doing_wp_cron 

O WordPress carrega todos os arquivos principais necessários, Plugins etc. no wp-cron.php com o seguinte CÓDIGO:

 if ( !defined('ABSPATH') ) { /** Set up WordPress environment */ require_once( dirname( __FILE__ ) . '/wp-load.php' ); } 

Portanto, não se preocupe com o WordPress, não carregando resources importantes.

Existem algumas desvantagens: Em primeiro lugar, o uso do wp-cron.php vem como uma chamada cli, portanto, coisas como as variables ​​$ _SERVER não estão definidas. As pessoas superam esta limitação usando um pedido de curl para wp-cron.php em seu lugar.

Em segundo lugar, porque o próprio WP não está carregado com wp-cron.php; Se você usar um plugin SMTP mailer, isso não será carregado ao ligar o wp-cron. Mais uma vez, usar uma chamada curl substitui esse problema. Curl parece ser o método mais utilizado.

Contudo; Eu prefiro usar o wp-cli depois de definir as configurações de email no postfix e (para nginx) php-fpm config corretamente e definir um crontab, como

 */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 

(Liste todos os crones com campos específicos no formato csv – o gancho sendo o nome do cron, o próximo parente relativo é o tempo. Descarte os que mostram ‘agora’ como a próxima execução (os que são devidos agora) usando AWK, passe essa lista para xargs para Ligue para wp cron event run $HOOK em cada cron.) Usando wp-cli carrega o WordPress corretamente (eu escolho saltar os plugins ao listar os crons, como erros de código e alertas php estragando a saída com script, mas não para ignorá-los quando executados o cron com xargs, como o cron pode precisar dos plugins sendo carregados)

Espero que isso dê algumas dicas sobre o que procurar.