我正在开发一个 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
几点注意事项:
您需要在表中维护一个字段,例如sent_status
.
在获取邮件时,使用 sql WHERE 子句 likesent_status = 0
并在邮件发送给用户时通过电子邮件 id 更新此字段sent_status = 1
。
所以单个用户无法批量接收邮件。