¿Cuáles son los pasos para solucionar y resolver este problema según el título?
Cuando intento ejecutarlo manualmente, aparece una página inmediatamente y aparece el mensaje de error "Intentando volver a ejecutar cron mientras ya se está ejecutando".
drush sqlq "DELETE FROM semaphore WHERE name = 'cron';"
Respuestas:
El semáforo cron probablemente esté bloqueado. Puede intentar llamar a drupal_cron_cleanup () desde cualquier parte de su código (que no es invocado por cron) y eso debería desbloquear su variable de semáforo cron.
Si tiene drush configurado en Drupal 6, también puede probar:
fuente
cache_bootstrap
.drupal_cron_cleanup()
parece no actualizarse.Resumen
El mensaje de error que está viendo sucederá si se cumplen las dos condiciones siguientes:
Por lo tanto, este mensaje de error es un síntoma de una tarea cron que falla o tarda demasiado en ejecutarse. (Nota: me doy cuenta de que ya ha encontrado al culpable, pero quería agregar una respuesta para las personas que encuentran esta página a través de búsquedas, como lo hice)
Antecedentes
Lo primero que hay que entender es cómo se ejecutan las tareas cron de Drupal. El cron de Drupal se invoca a intervalos regulares, ya sea a través de un trabajo cron en su servidor o después de cada carga de página si usa el cron del pobre, que es el valor predeterminado de Drupal.
Sin embargo, las tareas cron no se ejecutan necesariamente cada vez que se invoca cron: hay una configuración en Drupal (el valor predeterminado es 3 horas) que dice con qué frecuencia se deben ejecutar las tareas cron. Pero este retraso de 3 horas solo se aplica si las tareas cron han terminado con éxito.
En Drupal 7, cron utiliza los mecanismos de bloqueo de Drupal , que proporcionan un sistema cooperativo de bloqueo de asesoramiento. Una de las características de este sistema de bloqueo es que los bloqueos caducan después de un cierto tiempo. En el caso de cron, caduca después de 4 minutos, por lo que si su cron se invoca cada 3 minutos y el trabajo cron anterior no había terminado en ese momento (se bloqueó o fue muy lento), de hecho obtendría este mensaje de error .
El hecho de que configure el cron para que sea cada 12 horas no hace la diferencia, ya que la tarea cron de Drupal está fallando / tarda demasiado, Drupal asume que no se ha ejecutado, por lo que intenta ejecutarlo nuevamente tan pronto como se invoque cron. El retraso de doce horas solo se aplica a ejecuciones cron exitosas.
La variable de semáforo cron ya no existe en Drupal 7, esto era para una versión anterior de Drupal. En Drupal 7 no hay una manera confiable de liberar manualmente un bloqueo, porque el backend de bloqueo puede cambiar, sin embargo, si está utilizando el mecanismo de bloqueo central, puede liberar bloqueos cron editando la base de datos:
Pero al hacer esto, solo corregirá los síntomas: el problema que debe abordarse es por qué cron falla / tarda tanto en ejecutarse.
fuente
La
cron_semaphore
variable existía en Drupal 6, pero está utilizando Drupal 7, por lo que los bloqueos del semáforo se movieron a una tabla separada llamadasemaphore
.Entonces, la solución para desbloquear el semáforo cron sería:
Drupal 7
Drupal 6
fuente
drush sql-query "DELETE FROM semaphore WHERE name='cron'"
Puede depurar el cron utilizando el módulo Cron Debug .
fuente
Así es como resolví el problema de cron:
name = cron
fuente
Para Drupal 8: drush sqlq "DELETE FROM semaphore WHERE name = 'cron';"
fuente
En Drupal 7, como incluso otra opción,
A través de lo
drush cron
que estaba recibiendo,Esto estaba en el entorno de desarrollo y sucedió porque se estaba ejecutando un cron anterior y se interrumpió.
En
includes/common.inc
, en la línea 5413, o alrededor, encontrará este bloque, https://cgit.drupalcode.org/drupal/tree/includes/common.inc?h=7.x#n5413Modificar el
if
con un&& FALSE
,Y vuelva a ejecutar cron. Eso le permitirá correr.
Por favor, no implemente esto y vuelva a invertirlo una vez que finalice. También ayuda con la depuración.
fuente
Me he enfrentado a esto varias veces. En Drupal 6 Si no usas drush puedes arreglarlo así:
1 Elimine las variables cron_% de la tabla de variables.
2 borrar el caché de Drupal en: / admin / settings / performance
presionando el botón 'borrar datos en caché' en la parte inferior de la página.
3 ejecute cron desde el panel de administración / admin / reports / status / run-cron no lo ejecute desde la línea de comando ya que esto puede causar problemas.
4 Verifique que la próxima ejecución automática de cron se complete normalmente.
fuente
Puede depurar usando xdebug, ejecutar cron desde la interfaz de administración Admin> Configuración> sistema> cron.
fuente