Pular para o conteúdo

Cron e Processamento em Segundo Plano

O PrimoCRM realiza todo o trabalho pesado em segundo plano: envios de campanhas, sequências de gotejamento e etapas de automação são processados por trabalhadores agendados, nunca na requisição de página. Esses trabalhadores executam no cron do WordPress, então um cron confiável é o que mantém seus e-mails sendo enviados no horário. Esta página explica como isso funciona e como torná-lo sólido.

O PrimoCRM registra dois agendamentos personalizados e um pequeno conjunto de trabalhadores em segundo plano:

Trabalhador Executa Trabalho
Envio de e-mail de campanha Sob demanda (apenas enquanto uma campanha tiver e-mails pendentes) Entrega uma campanha em lotes limitados
Processamento de sequência A cada minuto Envia os e-mails de sequência devidos
Processamento de automação A cada minuto Avança os contatos pelas etapas de automação
Verificação de integridade da fila A cada 5 minutos Recupera e-mails travados e reinicia campanhas paradas

Cada trabalhador reivindica um lote de trabalho, respeita um orçamento de tempo para nunca exceder os limites da sua hospedagem e reagenda a si mesmo. A verificação de integridade de 5 minutos é uma rede de segurança: se um envio parar, ela o empurra de volta em movimento no próximo ciclo.

O WordPress vem com um pseudocron que é disparado apenas quando alguém visita o site. Em um site movimentado, isso funciona bem. Em um site de baixo tráfego, horas podem passar sem nenhuma visita, portanto os envios agendados não são executados até que o próximo visitante chegue. O sintoma é uma campanha que fica travada em “enviando” e é disparada lentamente ou nem um pouco.

A solução é substituir o pseudocron acionado por visitantes por um cron real que seja disparado em um horário fixo, idealmente a cada minuto.

  • Abra o PrimoCRM, vá em Configurações e procure pelo status do sistema ou do cron, que informa se os trabalhadores estão agendados e quando foram executados pela última vez.
  • Ou instale um plugin auxiliar como o WP Crontrol e confirme se os eventos primocrm_process_sequences, primocrm_process_automations e primocrm_queue_health_check estão presentes e sendo disparados.

Se uma campanha estiver travada e seu site receber pouco tráfego, o cron é quase sempre a causa.

Dois passos: desativar o pseudocron do WordPress e, em seguida, adicionar um cron real que seja executado a cada minuto.

Adicione isto ao arquivo wp-config.php, acima da linha “Pronto, pode parar de editar”:

define( 'DISABLE_WP_CRON', true );

Isso impede que o WordPress acione o cron no carregamento de páginas, de modo que o seu cron real seja o único gatilho.

Escolha a opção que corresponda à sua hospedagem.

WP-CLI (melhor, se você tiver acesso via shell):

* * * * * cd /path/to/wordpress && wp cron event run --due-now >/dev/null 2>&1

Binário PHP (também ótimo com acesso via shell):

* * * * * php /path/to/wordpress/wp-cron.php >/dev/null 2>&1

cPanel: abra Cron Jobs (Tarefas Cron), configure o agendamento para a cada minuto (* * * * *) e use um dos comandos acima com o caminho completo para o seu site.

Sem acesso via shell (hospedagem compartilhada)? Use um serviço de cron remoto gratuito como o cron-job.org para chamar a sua URL de cron via HTTP a cada minuto:

https://yoursite.com/wp-cron.php?doing_wp_cron

Cadastre-se no serviço, adicione essa URL, defina o intervalo para 1 minuto e salve. Isso chama o cron do WordPress a partir de fora em um horário fixo.

  • Uma campanha está travada em “enviando”. Quase sempre é o cron. Confirme se um cron real está sendo disparado a cada minuto e se DISABLE_WP_CRON está configurado. A verificação de integridade de 5 minutos retomará o envio assim que o cron for executado.
  • Automações ou sequências são executadas com atraso. O intervalo do seu cron está muito longo ou o pseudocron está aguardando visitantes. Mude para um cron real de 1 minuto.
  • Nada é enviado. Independentemente do cron, confirme se o seu método de envio está configurado e se um e-mail de teste chega. O cron controla quando o trabalho é executado; o mailer controla se ele faz a entrega.
  • Limites de CPU da hospedagem compartilhada. Os trabalhadores possuem orçamento de tempo e recuam sob carga, portanto são seguros em hospedagens compartilhadas. Se a sua hospedagem ainda reclamar, um intervalo ligeiramente maior (2 a 5 minutos) reduz a frequência ao custo de pontualidade.

Consulte também Requisitos para pré-requisitos de PHP e servidor, e Envio e Entregabilidade para o lado do mailer.