Trabajo cron: envío de correos electrónicos masivos a la vez

Trabajo cron: envío de correos electrónicos masivos a la vez

He desarrollado un script PHP donde quiero enviar correos electrónicos automatizados a los usuarios. Implementé con éxito un trabajo cron con un script PHP que verifica una tabla de cola de correo PHP en busca de correos pendientes. El script funciona bien, pero el trabajo cron funciona de manera extraña: envía el correo a los usuarios, pero 3 o 4 a la vez. Quería enviar el correo solo una vez. ¿Cómo puedo conseguir esto?

Utilizo una condición para verificar si el correo se envía o no; si es 0, enviará el correo y actualizará el valor a 1. Esta condición funciona bien. Además, la base de datos relativa muestra solo una entrada por usuario, por lo que lógicamente solo se debe enviar un correo electrónico al usuario, pero en cambio, el trabajo cron envía 3 o 4 mismos correos electrónicos a la vez al usuario.

Configuré el trabajo cron cada 2 minutos. El comando es el siguiente:

2 * * * * wget (Http PATH to SERVER)/Utils/MailQueue.php

Respuesta1

Si cree que se pueden estar ejecutando varias instancias de su secuencia de comandos al mismo tiempo, utilice algún tipo de mecanismo de bloqueo. Pon tu wget en un script y envuélvelo en unrebañodominio

2 * * * * /usr/bin/flock -n /tmp/myAppLock.lck /path/to/your/wgetscript 

Si el script MailQueue.php está en la misma máquina en la que estás ejecutando cron, entonces no necesitas wget

2 * * * * /usr/bin/flock -n /tmp/myAppLock.lck /usr/bin/php /path/to/Utils/MailQueue.php

Probablemente será una mejor solución ya que funcionará sin su servidor web.

información relacionada