Pertama-tama ya, ini adalah satu lagi pertanyaan / topik tentang antrian email 1.9.1. Tetapi ini bukan tentang masalah cron (seperti ini atau ini ) atau tentang fitur antrian baru yang tidak digunakan (seperti ini ).
Dalam kasus kami, kami memiliki masalah, bahwa antrian ( core_email_queue
dan core_email_queue_recipients
) tidak akan mendapatkan email tentang pesanan baru atau pembaruan pesanan dan oleh karena itu tidak ada lagi email yang dikirim untuk pesanan apa pun yang terkait, juga cron bekerja dengan sempurna dan secara manual menambahkan email ke antrian berfungsi dan mereka dikirim.
Yang aneh adalah, di lingkungan pengujian kami semuanya bekerja. Bahkan ketika kami tayang hari ini di menit pertama semua email diproses tetapi setelah beberapa menit (tanpa modifikasi lebih lanjut pada sistem live tentu saja) tidak ada lagi email baru yang ditambahkan ke antrian sama sekali. Sepertinya ini terjadi (tapi saya tidak tahu pasti) ketika pelanggan pertama menggunakan PayPal Express, yang tidak kami uji sebelumnya: - / Dan memang kami menggunakan beberapa penggantian kustom dalam logika PayPal Express dengan sendNewOrderEmail()
fungsi lama . Tetapi kami tidak dapat membuat email berfungsi lagi bahkan setelah menambal yang digunakan queueNewOrderEmail()
.
Jadi pertanyaan pertama adalah, apakah mungkin fungsi lama memicu beberapa ketidakkonsistenan yang 'pecah' antrian email? Atau ini semua hanya kebetulan besar dan ada penjelasan yang sama sekali berbeda?
Karena kami tidak dapat menemukan masalah, tetapi tentu saja diperlukan email untuk bekerja lagi secepatnya, kami mencoba core override yang lain. Dalam Mage_Core_Model_Email_Template_Mailer
(tentu saja dalam salinan di local
) kami berkomentar di baris 76: ->setQueue($this->getQueue())
Ini tampaknya memotong antrian dan semua email dikirim kembali dengan cara lama.
Namun, karena kami ingin menjaga jumlah core override seminimal mungkin dan kami juga tidak bisa memberi tahu sekarang apakah kami akan menghadapi efek samping lain, kiat atau solusi lain dari orang-orang dengan pemahaman yang lebih dalam tentang kode magento dan antrian email akan sangat dihargai.
Pembaruan untuk 1.9.2: Pada peningkatan ke 1.9.2 kami melihat lebih dekat pada antrian email lagi dan tidak dapat mereproduksi masalah. Tetapi karena kita masih tidak memiliki petunjuk nyata apa masalah dengan 1.9.1 itu dan karena Mage_Core_Model_Email_Template_Mailer::send()
masih berfungsi dengan cara yang dijelaskan di sini kita masih tidak menggunakan antrian. Dengan cara ini kami berharap tidak berjalan dalam masalah yang sama lagi setelah beberapa waktu dalam produksi.
tl; dr: Antrian email tidak berfungsi di 1.9.1, mengomentari baris 76 dalam Mage_Core_Model_Email_Template_Mailer
mem-bypass antrian email dan email dikirim lagi tetapi ini rasanya bukan solusi yang baik. Bagaimana ini bisa diselesaikan dengan lebih baik?
sumber
exception.log
atau mungkinsystem.log
, apakah ada petunjuk di sana?core
untuk memastikan semua yang tidak dikustomisasi atau ekstensi sudah ada dan tidak dimodifikasi dan itu adalah). Izin cocok dengan pengaturan lama dan log / laporan bersih.core_email_queue_send_all
juga menjalankan setiap menit dan dari tempat kita melihat bahwa itu benar-benar dieksekusi.Jawaban:
Dugaan saya adalah pengaturan cron.php untuk dijalankan setiap menit telah menyebabkan banyak hal berdiri di atas satu sama lain, yaitu, tidak selesai sebelum tugas berikutnya yang dijadwalkan dengan sifat yang sama atau serupa dijalankan. Karena kedua cron.php tidak akan menyadari masing-masing negara. Catatan yang sama dapat dicoba dua kali sehingga menyebabkan beberapa pengecualian aneh yang melanggar pengiriman email antrian.
Dengan mengatakan bahwa ada
Mage::Log
dalam pengecualian dari Mailer Antrian, jadi pastikan pencatatan diaktifkan akan menjadi langkah terbaik untuk membantu menentukan apakah ada pengecualian. Mungkin bijaksana untuk juga hanya lariphp -f cron.php
dari CLI untuk melihat apakah itu juga membuang pengecualian, Anda mungkin tidak melihatnya berjalan di belakang layar.Saya juga akan mulai dengan
mail()
tes PHP sederhana untuk memastikan Anda tidak menjalankan kebijakan Spam atau semacamnya. Hanya untuk memastikan itu bukan sesuatu yang lebih rendah di tumpukan yang menyebabkan masalah.Hanya beberapa spekulasi, semoga membantu!
* EDIT *
Gunakan
cron.sh
alih-alihcron.php
seperti yang akan dilakukangrep ps
untuk melihat apakah proses sebelumnya sudah berjalan.sumber
Periksa apakah core_email_queue dan core_email_queue_recipients memiliki AUTO_INCREMENT. Jika tabel itu tidak memiliki AI aktifkan itu tidak akan mengambil entri baru.
sumber