Magento 1.9.1 Antrian Email tidak berfungsi / bermasalah - bagaimana cara mengatasi masalah dan apa yang dianggap patch terbaik?

35

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_queuedan 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_Mailermem-bypass antrian email dan email dikirim lagi tetapi ini rasanya bukan solusi yang baik. Bagaimana ini bisa diselesaikan dengan lebih baik?

Jey DWork
sumber
1
Berapa banyak transaksi pengujian yang Anda jalankan dibandingkan dengan berapa banyak transaksi langsung yang terjadi dalam beberapa menit pertama? Apakah ini peningkatan dari versi yang lebih lama dan beberapa file hilang atau memiliki izin yang tidak tepat? Bagaimana exception.logatau mungkin system.log, apakah ada petunjuk di sana?
pspahn
Itu merupakan upgrade dari 1.9.0.1 dan tidak dilakukan melalui Connect-Manager tetapi dari basis kode Magento jadi saya ragu kami memiliki file yang hilang (kami juga melakukan diff coreuntuk memastikan semua yang tidak dikustomisasi atau ekstensi sudah ada dan tidak dimodifikasi dan itu adalah). Izin cocok dengan pengaturan lama dan log / laporan bersih.
Jey DWork
Apakah cron diatur sama?
pspahn
Ketika kami melihat perubahan email pada log perubahan, kami mengubah cron untuk dijalankan setiap menit dari setiap 5 menit sebelumnya (karena kami memahami perubahan sehingga jika tidak, dalam kasus terburuk, pelanggan harus menunggu hingga 5 menit untuk surat konfirmasi). Selain itu tidak ada perubahan dan seperti yang dikatakan sebelumnya dan kami melihat dari pekerjaan lain cron berjalan tanpa masalah. // edit: Saya mungkin harus menambahkan bahwa kita menggunakan (dan selalu digunakan) Aoe_Scheduler di mana kita core_email_queue_send_alljuga menjalankan setiap menit dan dari tempat kita melihat bahwa itu benar-benar dieksekusi.
Jey DWork
Q4 2015 dan saya memiliki masalah yang sama, saya dapat mengonfirmasi bahwa tabel antrian benar-benar hilang untuk beberapa pesanan, tanda yang jelas untuk mengonfirmasi laporan bahwa tidak ada email yang diterima. Sayangnya logging dimatikan dalam kasus saya, jadi saya belum menemukan kesalahan. Sudahkah Anda mempelajari sesuatu yang baru sejak semula memposting yang mungkin bermanfaat untuk ditambahkan?
Rick Buczynski

Jawaban:

8

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::Logdalam pengecualian dari Mailer Antrian, jadi pastikan pencatatan diaktifkan akan menjadi langkah terbaik untuk membantu menentukan apakah ada pengecualian. Mungkin bijaksana untuk juga hanya lari php -f cron.phpdari 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.shalih-alih cron.phpseperti yang akan dilakukan grep psuntuk melihat apakah proses sebelumnya sudah berjalan.

B00MER
sumber
Terima kasih atas masukannya tetapi masalah-masalah ini cukup dapat dikecualikan. Hanya karena pekerjaan cron sistem aktual berjalan setiap menit, tidak berarti semua pekerjaan cron Magento dilakukan. Dalam kasus kami, hanya email yang disetel yang juga berjalan setiap menit dan dari cron log Magentos kita dapat melihat bahwa semua pekerjaan cron selesai dengan sukses - bahkan dalam menit yang "penuh tekanan" (yaitu setiap jam atau lebih ketika lebih banyak pekerjaan berjalan sekaligus dan bukan hanya surel ). Logging juga diaktifkan dan pengecualian tidak dibuang sama sekali. Berlari ke filter spam dapat dikecualikan juga setelah solusi saya memposting semua email menjangkau semua pelanggan.
Jey DWork
Anda mungkin ingin mencoba dan mengaktifkan mode pengembang untuk melihat apakah itu membantu menghasilkan pengecualian yang tidak dicatat. Berhati-hatilah jika beroperasi dalam produksi. Juga ada log server web yang berkorelasi?
B00MER
2
@JeyDWork sudahkah Anda menerapkan Aoe_Scheduler ? Ini bisa memberikan visibilitas yang baik.
Tanda
2
Ingin melihat pembaruan. Antrian email terbukti menjadi tantangan bagi banyak orang.
patok
1
Bagi saya, saya menggunakan standar paypal yang memerlukan data pengembalian IPN (Pemberitahuan Pembayaran Instan) dari paypal hanya untuk mengonfirmasi pembayaran berhasil dan mengubah status pesanan menjadi pemrosesan / selesai dan akhirnya mengirim email .. tetapi saya tidak memiliki pengaturan domain aktual untuk server dan vhosts saya untuk mengakses itulah alasan paypal tidak dapat memposting data IPN ke magento. Anda dapat memeriksa riwayat IPN di profil akun bisnis paypal. Paypal benar-benar menunjukkan data yang seharusnya dikirim dan statusnya "coba lagi" ..
zaw
0

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.

Ali Exalter
sumber