Cron作业一次发送大量电子邮件

我已经开发了一个PHP脚本,我想发送自动邮件给用户。 我用一个PHP脚本成功地实现了一个cron作业,该脚本检出一个PHP邮件队列表,用于挂起邮件。 脚本工作正常,但cron工作奇怪:它发送邮件给用户,但一次3或4。 我只想发一次邮件。 我怎样才能做到这一点?

我使用一个条件来检查邮件是否被发送,如果它是0,那么它将发送邮件并将值更新为1.这种情况工作正常。 此外,相对数据库仅显示每个用户一个条目,因此逻辑上只有一个电子邮件应该发送给用户,而cron作业一次发送3或4个相同的电子邮件给用户。

我每2分钟设置一次cron作业。 命令如下:

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

如果您认为脚本的多个实例可能同时运行,则使用某种forms的locking机制。 把你的wget放在一个脚本中,并把它包装在一个flock命令中

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

如果MailQueue.php脚本与您正在运行cron的同一台计算机上,那么您不需要wget

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

将可能是一个更好的解决scheme,因为它会在没有你的networking服