-1

我正在开发一个 php 脚本,我想在其中向用户发送自动邮件。我成功地使用 php 脚本实现了一个 cron 作业,该脚本检查了一个 php 邮件队列表以查找待处理的邮件。该脚本运行良好,但 cron 作业运行异常,它将邮件发送给用户,但一次 3 或 4 个。我只想发送一次邮件。我怎样才能实现它?

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

谢谢!

4

3 回答 3

2

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

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

于 2012-08-23T12:31:28.043 回答
0

添加一些类似于 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 运行它。
于 2012-08-23T12:37:23.990 回答
0

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

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

所以单个用户无法批量接收邮件。

于 2012-08-23T12:29:47.340 回答