Sumário
A mensagem de erro que você está vendo aconteceria se as duas condições a seguir fossem atendidas:
- Os trabalhos do cron não são concluídos (erro) ou levam mais de 4 minutos para serem finalizados;
- Você invoca o cron com mais frequência a cada 4 minutos (de acordo com a configuração do crontab, não a do Drupal)
Esta mensagem de erro é, portanto, um sintoma de uma tarefa cron que está falhando ou está demorando muito para ser executada. (Nota: eu sei que você já encontrou o culpado, mas eu queria adicionar uma resposta para as pessoas que encontrarem esta página por meio de pesquisas, como eu).
fundo
A primeira coisa a entender é como as tarefas do cron do Drupal são executadas. O cron Drupal é chamado em intervalos regulares - por meio de um trabalho cron no seu servidor ou após o carregamento de cada página, se você usar o cron do pobre, que é o padrão do Drupal.
As tarefas cron não são necessariamente executadas sempre que o cron é chamado - há uma configuração no Drupal (o padrão é 3 horas) que diz com que frequência as tarefas cron devem ser executadas. Mas esse atraso de 3 horas se aplica apenas se as tarefas cron tiverem sido concluídas com êxito.
No Drupal 7, o cron usa os mecanismos de bloqueio do Drupal , que fornecem um sistema de bloqueio consultivo e cooperativo. Um dos recursos desse sistema de bloqueio é que os bloqueios expiram após um certo tempo. No caso do cron, ele expira após 4 minutos - portanto, se o seu cron for chamado a cada 3 minutos e o trabalho anterior do cron não tiver terminado até esse momento (ele travou ou estava muito lento), você realmente receberia essa mensagem de erro .
O fato de você definir o cron para cada 12 horas não faz diferença - porque a tarefa cron do Drupal está falhando / demorando muito tempo, o Drupal assume que não foi executado e, portanto, tenta executá-lo novamente assim que o cron for invocado. O atraso de doze horas se aplica apenas a execuções cron bem-sucedidas.
A variável cron semáforo não existe mais no Drupal 7 - era para uma versão mais antiga do Drupal. No Drupal 7, não há uma maneira confiável de liberar manualmente um bloqueio, porque o backend de bloqueio pode mudar - no entanto, se você estiver usando o mecanismo de bloqueio principal, poderá liberar os bloqueios cron editando o banco de dados:
DELETE FROM semaphore WHERE name = 'cron';
Mas, ao fazer isso, você só conserta os sintomas - o problema que precisa ser resolvido é o motivo pelo qual o cron está falhando / demorando tanto para ser executado.