Magento 1.9.1 Email Hàng đợi không hoạt động / lỗi - làm thế nào để khắc phục sự cố và những gì được coi là bản vá tốt nhất?


35

Trước hết, đây là một câu hỏi / chủ đề khác về hàng đợi email 1.9.1. Nhưng nó không phải là về bất kỳ vấn đề cron nào (như thế này hay thế này ) hoặc về tính năng hàng đợi mới không được sử dụng (như thế này ).

Trong trường hợp của chúng tôi, chúng tôi đã gặp sự cố, rằng hàng đợi ( core_email_queuecore_email_queue_recipients) đơn giản là sẽ không nhận được bất kỳ email nào về đơn đặt hàng mới hoặc cập nhật đơn hàng và do đó không có email nào được gửi cho bất kỳ đơn hàng nào liên quan, cron cũng đang hoạt động hoàn hảo và thêm email vào hàng đợi hoạt động và họ được gửi đi.

Điều kỳ lạ là, trong môi trường thử nghiệm của chúng tôi, mọi thứ đều hoạt động. Ngay cả khi chúng tôi đã phát trực tiếp vào ngày hôm nay trong những phút đầu tiên, tất cả các email đã được xử lý nhưng sau một vài phút (tất nhiên không có bất kỳ sửa đổi nào trên hệ thống trực tiếp), không có thêm email mới nào được thêm vào hàng đợi. Có vẻ như điều này đã xảy ra (nhưng tôi không thể chắc chắn) khi khách hàng đầu tiên sử dụng PayPal Express, mà chúng tôi đã không kiểm tra trước: - / Và thực sự chúng tôi đã sử dụng một số ghi đè tùy chỉnh trong logic PayPal Express với sendNewOrderEmail()chức năng cũ . Nhưng chúng tôi không thể nhận email để hoạt động trở lại ngay cả sau khi vá chúng để sử dụng queueNewOrderEmail().
Vì vậy, câu hỏi đầu tiên sẽ là, có thể là chức năng cũ đã kích hoạt một số mâu thuẫn 'phá vỡ' hàng đợi email? Hay tất cả chỉ là một sự trùng hợp lớn và có một lời giải thích hoàn toàn khác nhau?

Vì chúng tôi không thể tìm thấy vấn đề nhưng tất nhiên các email cần thiết để hoạt động trở lại càng sớm, chúng tôi đã chuyển sang ghi đè lõi khác. Trong Mage_Core_Model_Email_Template_Mailer(tất nhiên là trong một bản sao local), chúng tôi đã nhận xét dòng 76: ->setQueue($this->getQueue())
Điều này dường như bỏ qua hàng đợi và tất cả các thư được gửi lại theo cách cũ.

Tuy nhiên, vì chúng tôi muốn giữ số lượng phần ghi đè ở mức tối thiểu và chúng tôi cũng không thể biết ngay nếu chúng tôi sẽ phải đối mặt với bất kỳ tác dụng phụ nào khác, bất kỳ mẹo hoặc giải pháp nào khác từ những người có hiểu biết sâu hơn về mã magento và hàng đợi email sẽ được đánh giá cao.

Cập nhật cho 1.9.2: Khi nâng cấp lên 1.9.2, chúng tôi đã xem xét kỹ hơn về hàng đợi e-mail một lần nữa và không thể tái tạo vấn đề. Nhưng vì chúng ta vẫn chưa có manh mối thực sự về vấn đề với 1.9.1 là gì và vì việc ghi đè Mage_Core_Model_Email_Template_Mailer::send()vẫn hoạt động theo cách được mô tả ở đây nên chúng ta vẫn không sử dụng hàng đợi. Bằng cách này, chúng tôi hy vọng không gặp lại vấn đề tương tự sau một thời gian sản xuất.

tl; dr: Hàng đợi email không hoạt động trong 1.9.1, nhận xét dòng 76 Mage_Core_Model_Email_Template_Mailerbỏ qua hàng đợi email và thư được gửi lại nhưng đây không phải là một giải pháp tốt. Làm thế nào điều này có thể được giải quyết tốt hơn?


1
Bạn đã chạy bao nhiêu giao dịch thử nghiệm so với số lượng giao dịch trực tiếp đã thực hiện trong vài phút đầu tiên? Đây có phải là bản nâng cấp từ phiên bản cũ hơn và một số tệp bị thiếu hoặc có quyền không phù hợp? Làm thế nào về exception.loghoặc có thể system.log, có bất kỳ manh mối ở đó?
pspahn

Đó là một bản nâng cấp từ 1.9.0.1 và nó không được thực hiện thông qua Trình quản lý kết nối mà từ cơ sở mã Magento nên tôi nghi ngờ chúng tôi đã thiếu các tệp (chúng tôi cũng đã khác biệt coređể đảm bảo mọi thứ không được tùy chỉnh hoặc tiện ích mở rộng được đặt ra và không thay đổi và nó là). Quyền phù hợp với thiết lập cũ và nhật ký / báo cáo được sạch sẽ.
Jey DWork

Là cron được thiết lập giống nhau?
pspahn

Khi chúng tôi thấy thay đổi email trong nhật ký thay đổi, chúng tôi đã thay đổi cron để chạy mỗi phút từ mỗi 5 phút trước đó (vì chúng tôi hiểu sự thay đổi để trong trường hợp xấu nhất, khách hàng sẽ phải đợi tới 5 phút cho thư xác nhận của họ). Khác hơn là không có thay đổi và như đã nói trước đây và chúng tôi thấy từ các công việc khác cron chạy không có vấn đề. // chỉnh sửa: Có lẽ tôi nên thêm rằng chúng tôi sử dụng (và luôn luôn sử dụng) Aoe_Scheduler nơi chúng tôi đặt core_email_queue_send_allcũng chạy mỗi phút và từ đó chúng tôi thấy rằng nó thực sự được thực thi.
Jey DWork

Q4 2015 và tôi có cùng một vấn đề, tôi có thể xác nhận rằng các bảng xếp hàng hoàn toàn thiếu các mục nhập cho một số đơn đặt hàng, một dấu hiệu rõ ràng để xác nhận báo cáo rằng không có email nào được nhận. Thật không may đăng nhập đã bị tắt trong trường hợp của tôi, vì vậy tôi không có lỗi nào để tìm kiếm. Bạn đã học được bất cứ điều gì mới kể từ khi bạn đăng ban đầu có thể hữu ích để thêm?
Rick Buczynski

Câu trả lời:


8

Tôi đoán là cài đặt cron.php để chạy mỗi phút đã khiến rất nhiều thứ đứng lên nhau, nghĩa là không hoàn thành trước khi tác vụ tiếp theo được lên lịch có cùng tính chất hoặc tương tự được thực thi. Vì cả hai cron.php sẽ không nhận thức được từng trạng thái. Bản ghi tương tự có thể được thử hai lần gây ra một số ngoại lệ kỳ lạ phá vỡ hàng đợi gửi email.

Như đã nói, có Mage::Lognhững trường hợp ngoại lệ của Queue Mailer, do đó, đảm bảo rằng việc ghi nhật ký được kích hoạt sẽ là bước tốt nhất để giúp xác định xem có bất kỳ ngoại lệ nào không. Có thể là khôn ngoan khi chỉ chạy php -f cron.phptừ CLI để xem nếu nó cũng ném bất kỳ ngoại lệ nào, bạn có thể không nhìn thấy nó chạy phía sau hậu trường.

Tôi cũng sẽ bắt đầu với một mail()bài kiểm tra PHP đơn giản để đảm bảo bạn không gặp phải bất kỳ chính sách Spam nào. Chỉ để chắc chắn rằng nó không phải là một cái gì đó thấp hơn trong ngăn xếp gây ra vấn đề.

Chỉ cần một số suy đoán, hy vọng nó sẽ giúp!

* CHỈNH SỬA *

Sử dụng cron.shthay vì cron.phpnhư nó sẽ làm grep psđể xem nếu một quá trình trước đó đang chạy.


Cảm ơn cho đầu vào nhưng những vấn đề này khá chắc chắn có thể được loại trừ. Chỉ vì công việc cron hệ thống thực tế chạy mỗi phút không có nghĩa là tất cả các công việc cron Magento làm. Trong trường hợp của chúng tôi, chỉ có email được thiết lập để chạy mỗi phút và từ nhật ký cron của Magentos, chúng tôi có thể thấy rằng tất cả các công việc định kỳ đều kết thúc thành công - ngay cả trong những phút "căng thẳng" (tức là mỗi giờ hoặc nhiều hơn khi nhiều công việc chạy cùng một lúc và không chỉ email ). Ghi nhật ký cũng được kích hoạt và ngoại lệ hoàn toàn không được ném. Chạy vào các bộ lọc thư rác có thể được loại trừ cũng như sau khi giải pháp tôi đã đăng tất cả các email tiếp cận tất cả khách hàng.
Jey DWork

Bạn có thể muốn thử và bật chế độ nhà phát triển để xem liệu nó có giúp tạo ra bất kỳ ngoại lệ nào không được ghi lại không. Hãy thận trọng với nó nếu nó đang chạy trong sản xuất. Ngoài ra bất kỳ nhật ký máy chủ web tương quan?
B00mer

2
@JeyDWork bạn đã triển khai Aoe_Scheduler chưa? Điều này có thể cho tầm nhìn tốt.
đánh dấu

2
Muốn xem cập nhật. Hàng đợi email đang chứng tỏ là một thách thức đối với nhiều người.
đánh dấu

1
Đối với tôi, tôi đang sử dụng tiêu chuẩn paypal cần trả lại dữ liệu IPN (Thông báo thanh toán tức thời) từ paypal để xác nhận thanh toán thành công và thay đổi trạng thái đơn hàng thành xử lý / hoàn tất và cuối cùng gửi email .. nhưng tôi không thiết lập tên miền thực tế để máy chủ và vhost của tôi truy cập, đó là lý do paypal không thể đăng dữ liệu IPN lên magento. Bạn có thể kiểm tra lịch sử IPN trong hồ sơ tài khoản doanh nghiệp paypal. Paypal thực sự đã hiển thị dữ liệu được cho là gửi đi và trạng thái là "đang thử lại" ..
zaw

0

Kiểm tra xem core_email_queue và core_email_queue_reciprons có AUTO_INCREMENT không. Nếu những bảng đó không có AI cho phép, nó sẽ không có mục mới.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.