PHP电子邮件Cron作业


PHP Email Cron Job

我正在开发一个php脚本,我想在其中向用户发送自动邮件。我用php脚本成功地实现了一个cron作业,它检查了一个php邮件队列表中挂起的邮件。脚本运行良好,但cron作业运行异常。它向用户发送邮件,但一次发送3或4封。我只想寄一次邮件。我怎样才能做到这一点?

我的cron作业每2分钟检查一次邮件队列表。

谢谢!

每2分钟?我的猜测是,上一个cron作业没有完成,第二个作业开始了,这就是为什么它会向同一个人或帐户发送多封电子邮件。

尝试将频率降低到每小时左右。

添加一些类似PID文件工作方式的代码:

$path = '/path/to/pid/file';
// Check for PID file's existance, if found exit.
if (file_exists($path))
{
    echo 'PID File Exists';
    exit;
}
file_put_contents($path, '1'); // Create PID file
// Execute your code
unlink($path); // Delete the PID file

注意事项:

  • 如果你的脚本出现致命错误,那么你的脚本将永远不会再运行,你需要理想地检查文件的最后修改时间
  • 使用WGET运行crons是不好的,您的脚本仍然会超时,就像您通过浏览器运行它一样。使用PHP CLI运行它

您需要在表中维护一个字段,如sent_status

在获取邮件时,使用类似sent_status = 0的sql WHERE子句,并在sent_status = 1向用户发送邮件时通过电子邮件id更新此字段。

因此,单个用户无法批量接收邮件。