PHP:添加计时器

时间:2010-09-27 01:16:07

标签: php mailing-list

我正在创建一个邮件列表应用程序。由于邮件服务的限制,它每小时将发送40封电子邮件。我该如何添加计时器?

4 个答案:

答案 0 :(得分:3)

如果您需要创建计划任务,我建议您创建Cron Job

答案 1 :(得分:1)

您可以使用sleep()功能暂停脚本。然而,这不是一个好的解决方案。更好的方法是使用Cron,允许您每40分钟执行一次脚本。脚本本身只需检查到目前为止执行了多少次 - 信息可以存储在某个文件中:

$counter = file_exists('counter') ? file_get_contents('counter') : 1;

echo sprintf('Send %d portion of emails.', $counter);

file_put_contents('counter', ++$counter);

答案 2 :(得分:0)

答案 3 :(得分:0)

一种解决方案是创建一个数据库表来保存您发送的电子邮件的详细信息。让我们说它看起来像这样:

CREATE TABLE SentEmail (
    email_id INT NOT NULL,
    recipient_id INT NOT NULL,
    time_sent DATETIME NOT NULL,
    PRIMARY KEY (email_id, recipient)
)

此处email_id应该是包含您标记为要发送的电子邮件的表的外键,recipient_id应该是包含收件人详细信息的表的外键。 time_sent显然会记录发送电子邮件的时间。

现在,当您想发送电子邮件时,您需要知道

  • 这小时发送了多少封电子邮件;这可以使用COUNT查询
  • 找到
  • 已经发送了您当前正在处理的电子邮件;这也是一个简单的查询。

可能的变化是在表格中为您要发送的每个电子邮件用户组合添加一行,而不是仅为目前为止发送的每封电子邮件发送一行,并且有一列指示该电子邮件是否已发送到那个用户呢。这样可以很容易地告诉您还有谁发送电子邮件。

您可以将此方法与其他人建议的Cron作业结合使用,以确保定期处理电子邮件队列。