Saya menghabiskan hampir 3 hari dan tidak dapat memahami dan membuat Magento Cron untuk memproses tugas yang dijadwalkan. Saya menjalankan Magento 1.9.1.0 dan baru-baru ini memperhatikan bahwa email pesanan sekarang diantrikan alih-alih dikirim secara instan. Saya mengerti keharusan tapi tidak bisa membuat sistem untuk memilih antrian.
Inilah yang saya lihat untuk Cronjob.
Ini adalah baris perintah cronjob saya.
Ini adalah bagaimana tugas-tugas dibuat di tabel cron_schedule.
Karena catatan dibuat di tabel cron_schedule saya pikir Cron berjalan setiap 5 menit sekali. Jika saya secara manual menghapus catatan ini melalui PhpMyAdmin catatan dibuat secara otomatis setelah beberapa waktu.
Tetapi status tugas tetap 'tertunda' dan tidak pernah selesai. Tidak yakin apakah ada sesuatu yang salah dalam konfigurasi saya atau saya kehilangan sesuatu. Dapatkah seseorang tolong bantu saya bagaimana membuat tugas yang dijadwalkan berjalan tepat waktu. Juga mengapa banyak catatan dibuat untuk satu kode pekerjaan?
Memperbarui
Saya membersihkan seluruh meja dan cron menciptakan pekerjaan yang dijadwalkan. Semua pekerjaan dalam status tertunda dan tidak pernah berjalan bahkan menunggu lebih dari 60 menit. Ada yang salah di Magento 1.9.1
Pembaruan 11/02: Hari ini saya melakukan beberapa analisis pada prosesnya.
Saya mengedit cron.php seperti di bawah ini
echo 'iam before mdefault 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
echo 'iam before malways 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
echo 'i returned success';
Saya mengedit kelas Mage_Cron_Model_Observer seperti di bawah ini
public function dispatch($observer) {
echo 'iam inside dispath';
Pemahaman saya adalah ketika cron menjalankan -mdefault itu harus memanggil fungsi pengiriman dan eksekusi akan terjadi. Tetapi apa yang terjadi adalah seperti di bawah dalam cron output.
Content-type: text/html
iam before mdefault 1iam before malways 1i returned success
Ini berarti pengiriman itu tidak disebut ...
Satu sama lain mencoba
Saya secara manual mengubah variabel $isShellDisabled = true;
dan saya mengubah di bawah ini di cron.php.
if ($isShellDisabled) {
echo 'before always';
Mage::dispatchEvent('always');
echo 'after always';
Mage::dispatchEvent('default');
echo 'after default';
} else {
Mage::dispatchEvent($cronMode);
}
Output cron untuk di atas adalah seperti di bawah ini
Content-type: text/html
before alwaysiam inside dispath alwaysafter always
Sekarang ia memanggil 'dispatchAlways' tetapi bukan 'dispatch'
Tidak ada jawaban yang membantu saya. Tidak pernah memilih tugas yang dijadwalkan. Yaitu ketika Cron berjalan untuk pertama kalinya berhasil membuat tugas dalam tabel. Tapi itu tidak pernah menjalankan tugas.
sumber
*/5 * * * * /bin/sh PATH_TO_PRODUCTION/cron.sh
jika tersedia.cron_schedule
meja? Periksa apakah sudah diisi dengan tugas-tugas baru setelah satu jam atau lebihJawaban:
Itu adalah versi PHP dari Cron Jobs.
Versi PHP diatur dengan benar untuk situs yang karenanya berfungsi; Namun Cron Jobs berjalan di server asli PHP 5.3 yang mengapa saya mendapatkan kesalahan hanya ketika menjalankan Cron. Saya memperbarui ke versi 5.5.
Perintah Cron yang diubah:
atau di hostgator:
di cron.php
Setelah baris ini, tambahkan:
sumber
php -v
di terminal untuk melihat versi PHP yang digunakan terminal. Dalam kasus saya itu 5,6. Jadi saya harus memaksa penggunaan PHP 7.0 dengan mengubahphp
keea-php70
dalamcrontab -e
. Terima kasih!Apakah Anda mencoba mengosongkan
cron_schedule
meja? Periksa apakah sudah terisi dengan tugas-tugas baru setelah satu jam atau lebih.Anda juga dapat menggunakan Aoe_Scheduler untuk menonaktifkan cronjobs tertentu. Lihat apakah ada orang tertentu yang dapat menyebabkan kesalahan yang menghentikan semua tugas lainnya.
Cara Magento cronjobs mengatur kesalahan fatal dalam skrip akan menyebabkan eksekusi semua tugas gagal
sumber
Sebagai langkah pertama saya sarankan mengembalikan pengaturan Anda kembali ke pengaturan cron default Magento:
Ada masalah dengan pengaturan Anda saat ini: jadwal Anda dihasilkan setiap 15 menit tetapi hanya dijadwalkan sebelumnya selama 5 menit yang menyisakan jarak 10 menit.
sumber
$isShellDisabled = true;
dan ketika saya meluncurkan Cron.php melalui browser, pekerjaan akan diambil tetapi tidak melalui CronTab.php -f cron.php
dan./cron.sh
untuk melihat apakah mereka menghasilkan sesuatu untuk diselidiki lebih lanjut.Masalah yang sama bagi saya.
"Terlambat ..." kesalahan ditemukan.
Setelah membersihkan
cron_schedule
meja, cron.sh berhenti bekerja (tidak menjadwalkan lagi).Hanya bekerja setelah membunuh semua proses Cron lama.
sumber
Saya memiliki masalah yang sama. Masalah saya adalah khusus zona waktu: kolom
created_at
danscheduled_at
dalamcron_schedule
tabel harus UTC + 0, entri saya UTC + 2.Untuk memverifikasi ini, Anda cukup mengatur tanggal dari
created_at
danscheduled_at
ke kemarin dan menunggu hingga jadwal cron berikutnya.Semoga itu bisa membantu seseorang!
sumber
Di Bluehost, dalam perubahan cron.sh
untuk
Secara default di shared hosting itu menjalankan PHP 5.2.
Saya juga harus berubah
cron.php
, mengganti dua$isShellDisabled
baris dengan$isShellDisabled = true;
Untuk menghilangkan peringatan PHP, saya juga menambahkan baris ini sebelumnya
sumber