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.
Como o PrimoCRM usa o cron
Seção intitulada “Como o PrimoCRM usa o cron”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.
Por que um cron confiável importa
Seção intitulada “Por que um cron confiável importa”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.
Verificar se o cron está sendo executado
Seção intitulada “Verificar se o cron está sendo executado”- 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_automationseprimocrm_queue_health_checkestão presentes e sendo disparados.
Se uma campanha estiver travada e seu site receber pouco tráfego, o cron é quase sempre a causa.
Configurar um cron real (recomendado)
Seção intitulada “Configurar um cron real (recomendado)”Dois passos: desativar o pseudocron do WordPress e, em seguida, adicionar um cron real que seja executado a cada minuto.
1. Desativar o pseudocron
Seção intitulada “1. Desativar o pseudocron”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.
2. Adicionar um cron real a cada minuto
Seção intitulada “2. Adicionar um cron real a cada minuto”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>&1Binário PHP (também ótimo com acesso via shell):
* * * * * php /path/to/wordpress/wp-cron.php >/dev/null 2>&1cPanel: 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_cronCadastre-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.
Solução de problemas
Seção intitulada “Solução de problemas”- 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_CRONestá 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.