Saya berlari cron dan membatalkan eksekusi. Sekarang saya menerima pesan ini:
Mencoba menjalankan ulang cron saat sedang berjalan.
Di Drupal 7, saya bisa menghapus variabel cron_semaphore .
Apa cara untuk mencapai hal yang sama di Drupal 8?
Sekarang ada di semaphore
tabel dengan nama kunci "cron". Ini dapat dihapus melalui drush sqlq "DELETE FROM semaphore WHERE name = 'cron';"
perintah.
Atau, jika Anda dapat menjalankan PHP di lingkungan bootstrap Drupal, Anda dapat menjalankan baris:
\Drupal::lock()->release('cron');
drush php:eval '\Drupal::lock()->release("cron");'
Terima kasih untuk jawaban Shawn ..
Tampaknya membantu!
sumber
Untuk Drupal 8 run:
sumber
Drupal 7 tidak lagi menggunakan variabel cron_semaphore , tetapi sebuah kunci. Lihat
drupal_cron_run()
, dan khususnya baris berikut, bagian dari fungsi itu.Porting jalur tersebut ke Drupal 8 cukup lurus, karena Drupal 8 memiliki layanan untuk mendapatkan dan melepaskan kunci.
Kode yang setara ada di
Cron::run()
.Jika Anda perlu membuka kuncinya di host di mana Anda tidak dapat menggunakan Drush, seperti yang terjadi pada saya, untuk mencapai hal yang sama dari skrip eksternal yang bootstraps Drupal akan memerlukan kode yang mirip dengan yang berikut.
Saya mengadaptasi kode authorize.php . Saya mengubah izin pengguna yang diperlukan untuk menjalankan skrip, yang saya tempatkan di direktori yang berisi file authorize.php, dalam file cron_cleanup.php.
Jika Anda dapat menjalankan Drush, itu menjadi lebih mudah. (Lihat jawaban @ dman .)
sumber
Sampai di halaman ini ketika instalasi D7 saya macet. Saya merilisnya dengan menggunakan
sumber
lock_release('cron')
untuk melepaskan kunci cron.Jika Anda tidak bisa menjalankannya di Drupal 8 dengan langkah-langkah yang disarankan dari atas - mungkin Anda menggunakan sesuatu seperti Redis dan kunci cron disimpan di sana. Dalam hal ini Anda dapat maju dengan:
sumber