Bagaimana saya bisa menghentikan tugas cron dari dipicu oleh pengunjung situs?

12

Log situs saya menunjukkan bahwa cron dipicu jika seseorang mengunjungi situs web. Ini memperlambat waktu buka untuk kunjungan pertama.

Cron dikonfigurasi untuk berjalan setiap 3 jam di sini: Administrasi »Konfigurasi» Sistem »Cron .

Bagaimana saya bisa menjalankan jadwal cron dan tidak dipicu oleh pengunjung?

mata kucing
sumber

Jawaban:

9

Anda harus mulai dengan membaca halaman buku pegangan Drupal tentang cron untuk mendapatkan latar belakang dan perintah untuk dijalankan.

  • Jika Anda memiliki akses shell / SSH ke server (Linux), Anda bisa menjalankan use run crontab -u www-data -euntuk mengedit tabel cron untuk pengguna web. Anda harus dapat menggunakan detail pada tautan di atas untuk mengatur cron menjalankan yang tepat sesering yang Anda inginkan.
  • Jika Anda menggunakan hosting bersama tanpa akses shell, Anda harus menggunakan panel kontrol host web Anda (CPanel, Plesk, dll.) Untuk masuk dan menambahkan 'Tugas Terjadwal'. Ini menyediakan antarmuka web ke tab cron, sehingga pengaturan yang sama akan diperlukan.
  • Jika ini tidak tersedia, Anda harus meminta bantuan perusahaan hosting Anda, tetapi ada juga layanan gratis dan berbayar yang dapat Anda gunakan, panggil cron.phphalaman tersebut dari jauh untuk Anda. Lihat Tetapkan Pekerjaan Cron misalnya.

Lihatlah seperti modul Elysia Cron jika Anda ingin lebih banyak dari cron pada umumnya - itu punya dokumentasi yang baik dan memungkinkan Anda untuk mengontrol dengan baik tugas apa yang dijalankan saat itu.

Akhirnya, ingatlah untuk menonaktifkan situs yang menjalankannya ketika pengunjung tiba di Administrasi »Konfigurasi» Sistem »Cron ketika Anda berhasil mengatur ini.

Jim Kirkpatrick
sumber
Saya memiliki akses shell. Saya tahu cara mengatur pekerjaan cron. Jadi saya akan mencari tahu. Tetapi terima kasih telah merangkum semua informasi.
cateye
Tapi yang tidak saya mengerti adalah, mengapa Drupal berperilaku seperti sekarang. Jika konfigurasi dasar dijadwalkan untuk menjalankan cron setiap 3 jam, mengapa itu menunggu pengunjung?
cateye
1
Memikirkan tentang itu. Tentu saja tidak ada cara bagi Drupal untuk menjalankan pekerjaan cron tanpa bootstrap. Dan bootstrap terjadi ketika pengunjung mengunjungi situs. Jadi, ringkasannya adalah: Jika Anda ingin benar-benar menjadwalkan pekerjaan cron, Anda harus mengaturnya di sisi server.
cateye
2
Persis. Tidak ada yang terjadi pada server tanpa seseorang atau sesuatu yang menjalankannya. Drupal 7 default adalah menjalankan cron ketika pengguna datang sesekali untuk memastikan tugas-tugas utama dijalankan. Drupal 6 mengandalkan modul Cron Poor Man untuk melakukan ini tanpa adanya tugas cron yang tepat ... dan hampir semua yang ada di Drupal membutuhkan bootstrap untuk terjadi terlebih dahulu. Pekerjaan cron yang tepat di server tentu saja merupakan pilihan terbaik.
Jim Kirkpatrick
1
The JAWABAN DI BAWAH menjelaskan cara memperbaikinya. Bukan yang ini :(
Tomáš Fejfar
13

Drupal 7 tergabung dalam modulnya kode yang ada di Poormanscron , yang tujuannya tepat untuk menjalankan tugas Drupal cron di situs di mana tidak mungkin untuk mengatur tugas cron, ketika pengguna mengunjungi situs Anda, dan setiap X jam (sebagaimana diatur dalam halaman yang Anda lihat).

Jika Anda ingin menghindari perilaku itu, Anda hanya perlu mengatur "Run cron every" menjadi "Never"; bertentangan dengan apa yang terlihat, itu hanya mempengaruhi apa yang terjadi ketika pengguna mengunjungi situs Anda. [1] Anda masih dapat menjalankan tugas cron Drupal dari luar Drupal, mengingat bahwa dalam Drupal 7 cron.php perlu dipanggil, dari luar Drupal, meneruskan nilai yang ditunjukkan dalam "Administrasi> Laporan> Laporan Status."

 

tangkapan layar

 

 

 

 

 

[1]: Faktanya, baik cron.php , maupun drupal_cron_run () tidak memeriksa variabel Drupal yang digunakan di halaman pengaturan itu. Satu-satunya variabel Drupal yang digunakan adalah:

  • "cron_key" yang berisi kunci cron yang digunakan untuk menghindari tugas-tugas cron Drupal dijalankan dari pengguna yang tidak sah
  • "maintenance_mode" yang disetel ke TRUEsaat situs dalam mode pemeliharaan
  • "cron_last" yang berisi cap waktu kapan tugas cron dijalankan terakhir kali
kiamlaluno
sumber
Satu-satunya kesulitan adalah ketika pekerjaan cron habis setiap kali Anda melihat halaman dan Anda bahkan tidak bisa login sebagai admin untuk menonaktifkannya! huh ... Aku akan mengetahuinya tapi bagus untuk tahu itu bisa dinonaktifkan, begitu aku benar-benar masuk ke sana
Ya, saya menyelesaikan ini dengan cepat dengan menyiapkan monitor waktu aktif Montastic yang "memeriksa" URL aktivasi cron setiap 6 jam ...
Anders