En primer lugar, sí, esta es otra pregunta / tema sobre la cola de correo electrónico 1.9.1. Pero no se trata de ningún problema cron (como este o este ) o de que la nueva función de cola no se use (como esta ).
En nuestro caso, tuvimos el problema, que la cola ( core_email_queue
y core_email_queue_recipients
) simplemente no recibía ningún correo electrónico en nuevos pedidos o actualizaciones de pedidos y, por lo tanto, no se enviaron más correos electrónicos para nada relacionado con pedidos, también cron funciona perfectamente y agrega correos electrónicos manualmente a la cola funciona y los envían.
Lo extraño es que, en nuestro entorno de prueba, todo funcionó. Incluso cuando salimos a la venta hoy en los primeros minutos, todos los correos electrónicos se procesaron, pero después de algunos minutos (sin ninguna modificación adicional en el sistema en vivo, por supuesto) no se agregaron más correos electrónicos nuevos a la cola. Parece que esto sucedió (pero no puedo asegurarlo) cuando el primer cliente usó PayPal Express, que no probamos de antemano: - / Y de hecho estábamos usando algunas anulaciones personalizadas en la lógica de PayPal Express con la sendNewOrderEmail()
función anterior. Pero no pudimos hacer que los correos electrónicos volvieran a funcionar incluso después de parchearlos para usarlos queueNewOrderEmail()
.
Entonces, la primera pregunta sería, ¿es posible que la antigua función desencadenara alguna inconsistencia que 'se rompió' la cola de correo electrónico? ¿O todo esto es solo una gran coincidencia y hay una explicación totalmente diferente?
Como no pudimos encontrar el problema, pero, por supuesto, necesitábamos correos electrónicos para que funcionen nuevamente lo antes posible, fuimos a otra anulación de núcleo. En Mage_Core_Model_Email_Template_Mailer
(por supuesto, en una copia local
) comentamos la línea 76: ->setQueue($this->getQueue())
Esto parece omitir la cola y todos los correos se envían de la manera anterior.
Sin embargo, como nos gustaría mantener el número de anulaciones de núcleo al mínimo y tampoco podemos decir en este momento si enfrentaremos otros efectos secundarios, otros consejos o soluciones de personas con una comprensión más profunda del código de magento y Cola de correo electrónico sería apreciada.
Actualización para 1.9.2: En la actualización a 1.9.2, observamos más de cerca la cola de correo electrónico nuevamente y no pudimos reproducir el problema. Pero como todavía no tenemos una idea real de cuál era el problema con 1.9.1 y como la anulación Mage_Core_Model_Email_Template_Mailer::send()
todavía funciona de la manera descrita aquí, todavía no estamos usando la cola. De esta manera, esperamos no volver a tener el mismo problema después de algún tiempo en producción.
tl; dr: la cola de correo electrónico no funciona en 1.9.1, comentando que la línea 76 Mage_Core_Model_Email_Template_Mailer
omite la cola de correo electrónico y los correos se envían nuevamente, pero esto no parece una buena solución. ¿Cómo se puede resolver esto mejor?
fuente
exception.log
tal o posiblementesystem.log
, hay alguna pista allí?core
etc. para garantizar que todo lo que no está personalizado o una extensión esté en su lugar y sin modificaciones y lo es). Los permisos coinciden con la configuración anterior y los registros / informes están limpios.core_email_queue_send_all
que también se ejecute cada minuto y desde donde vemos que realmente se ejecuta.Respuestas:
Supongo que la configuración de cron.php para ejecutarse cada minuto ha provocado que muchas cosas se pongan una encima de la otra, es decir, que no finalicen antes de que se ejecute la siguiente tarea programada de la misma naturaleza o similar. Dado que cron.php no estaría al tanto de cada estado. Se podría intentar el mismo registro dos veces, causando alguna extraña excepción que rompa los envíos de correos electrónicos en cola.
Dicho esto, hay
Mage::Log
excepciones en el Queue Mailer, por lo que asegurarse de que el registro esté habilitado sería el mejor paso para ayudar a determinar si hay alguna excepción. Puede ser conveniente también ejecutarphp -f cron.php
desde CLI para ver si también está lanzando alguna excepción, es posible que no esté viendo que se ejecuta detrás de escena.También comenzaría con una simple
mail()
prueba de PHP para asegurarme de que no se encuentre con ninguna política de spam o tal. Solo para estar seguro de que no es algo más bajo en la pila que causa el problema.Solo algunas especulaciones, ¡espero que ayude!
* EDITAR *
Use en
cron.sh
lugar decron.php
como lo harágrep ps
para ver si ya se está ejecutando un proceso anterior.fuente
Compruebe si core_email_queue y core_email_queue_recipients tienen AUTO_INCREMENT. Si esas tablas no tienen AI habilitado, no tomará nuevas entradas.
fuente