Ejecuté cron y aborté la ejecución. Ahora recibo este mensaje:
Intentando volver a ejecutar cron mientras ya se está ejecutando.
En Drupal 7, podría eliminar la variable cron_semaphore .
¿Cuál es la forma de lograr lo mismo en Drupal 8?
Ahora está en la semaphore
tabla con el nombre clave "cron". Esto se puede eliminar mediante un drush sqlq "DELETE FROM semaphore WHERE name = 'cron';"
comando.
O, si puede ejecutar PHP en el entorno de arranque de Drupal, puede ejecutar la línea:
\Drupal::lock()->release('cron');
drush php:eval '\Drupal::lock()->release("cron");'
Gracias a Shawns contesta ..
Parecía ayudar!
fuente
Para ejecutar Drupal 8:
fuente
Drupal 7 ya no usa la variable cron_semaphore , sino un bloqueo. Vea
drupal_cron_run()
, y en particular las siguientes líneas, parte de esa función.Portar esas líneas a Drupal 8 es bastante sencillo, ya que Drupal 8 tiene un servicio para obtener y liberar un bloqueo.
El código equivalente está en
Cron::run()
.Si necesita desbloquearlo en un host donde no puede usar Drush, como me sucede a mí, para lograr lo mismo desde un script externo que arranca Drupal requeriría un código similar al siguiente.
Adapte el código de authorize.php . Cambié el permiso de usuario requerido para ejecutar el script, que coloqué en el directorio que contiene el archivo authorize.php, en el archivo cron_cleanup.php.
Si puedes ejecutar Drush, se vuelve más fácil. (Ver la respuesta de @ dman ).
fuente
Llegué a esta página cuando mi instalación de D7 se atascó. Lo lancé usando
fuente
lock_release('cron')
para liberar el bloqueo cron.Si no puede hacer que funcione en Drupal 8 con los pasos sugeridos desde arriba, tal vez esté usando algo como Redis y el bloqueo cron se almacena allí. En este caso puedes progresar con:
fuente