Uruchomiłem crona i przerwałem egzekucję. Teraz dostaję tę wiadomość:
Próba ponownego uruchomienia crona, gdy jest on już uruchomiony.
W Drupal 7 mogłem usunąć zmienną cron_semaphore .
Jak to osiągnąć w Drupal 8?
Teraz jest w semaphore
tabeli z nazwą klucza „cron”. Można to usunąć za pomocą drush sqlq "DELETE FROM semaphore WHERE name = 'cron';"
polecenia.
Lub, jeśli możesz uruchomić PHP w środowisku startowym Drupal, możesz uruchomić linię:
\Drupal::lock()->release('cron');
drush php:eval '\Drupal::lock()->release("cron");'
Dzięki Shawns odpowiedź ..
Wydawał się pomóc!
źródło
Dla uruchomienia Drupal 8:
źródło
Drupal 7 nie używa już zmiennej cron_semaphore , ale blokadę. Zobacz
drupal_cron_run()
, aw szczególności następujące wiersze, część tej funkcji.Przeniesienie tych linii do Drupala 8 jest dość proste, ponieważ Drupal 8 ma usługę pobierania i zwalniania blokady.
Odpowiednik kodu znajduje się w
Cron::run()
.Jeśli musisz odblokować go na hoście, na którym nie możesz używać Drusha, tak jak mi się zdarza, aby osiągnąć to samo z zewnętrznego skryptu, że Drupal wymagałby kodu podobnego do następującego.
Dostosowałem kod authorize.php . Zmieniłem uprawnienia użytkownika wymagane do uruchomienia skryptu, który umieściłem w katalogu zawierającym plik authorize.php, w pliku cron_cleanup.php.
Jeśli potrafisz uruchomić Drush, staje się łatwiejszy. (Zobacz odpowiedź @ dman .)
źródło
Dotarłem do tej strony, gdy moja instalacja D7 utknęła. Wydałem go za pomocą
źródło
lock_release('cron')
do zwolnienia blokady cron.Jeśli nie możesz zmusić go do działania w Drupal 8 z sugerowanymi krokami z góry - być może używasz czegoś takiego jak Redis i tam jest przechowywana blokada cron. W takim przypadku możesz przejść do:
źródło