J'ai couru cron et avorté l'exécution. Maintenant, je reçois ce message:
Tentative de réexécuter cron alors qu'il est déjà en cours d'exécution.
Dans Drupal 7, je pouvais supprimer la variable cron_semaphore .
Quelle est la façon d'obtenir la même chose dans Drupal 8?
drush php:eval '\Drupal::lock()->release("cron");'
Merci à Shawns de répondre ..
Semblait aider!
la source
Pour Drupal 8 run:
la source
Drupal 7 n'utilise plus la variable cron_semaphore , mais un verrou. Voir
drupal_cron_run()
, et en particulier les lignes suivantes, une partie de cette fonction.Le portage de ces lignes vers Drupal 8 est assez simple, car Drupal 8 a un service pour obtenir et libérer un verrou.
Le code équivalent est en
Cron::run()
.Si vous devez le déverrouiller dans un hôte où vous ne pouvez pas utiliser Drush, comme cela m'arrive, pour obtenir la même chose à partir d'un script externe qui démarre Drupal, il faudrait un code similaire au suivant.
J'ai adapté le code de authorize.php . J'ai modifié l'autorisation utilisateur requise pour exécuter le script, que j'ai placé dans le répertoire contenant le fichier authorize.php, dans le fichier cron_cleanup.php.
Si vous pouvez exécuter Drush, cela devient plus facile. (Voir la réponse de @ dman .)
la source
Arrivé sur cette page lorsque mon installation D7 est bloquée. Je l'ai libéré en utilisant
la source
lock_release('cron')
pour libérer le verrou cron.Si vous ne parvenez pas à le faire fonctionner dans Drupal 8 avec les étapes suggérées ci-dessus - vous utilisez peut-être quelque chose comme Redis et le verrou cron y est stocké. Dans ce cas, vous pouvez progresser avec:
la source