为基于Web的应用程序实现自动提醒邮件功能。

3
我希望为我的Web应用程序创建一个功能,即一旦用户输入到我的数据库中,每4周就会向他们发送一封电子邮件提醒他们做些反馈之类的事情。我听说cron job是我要找的东西,但我想知道还有什么其他的选择,是否存在php脚本或者简单的方法可以实现?我想要的是类似于从他们进入数据库开始倒计时,直到4周过去,然后调用一个PHP文件或其他东西向他们发送我选择的电子邮件。如果这是可能的,请让我知道!谢谢
1个回答

4
我建议使用定时任务(cron job)来完成,它可以在每天特定时间运行,发送电子邮件。定时任务可以调用一个 PHP 脚本,脚本将遍历所有用户并检查他们注册的时间,看是否有人是四周前(或其倍数)注册的。对于符合条件的任何用户,您可以通过 mail() 函数循环发送电子邮件。 定时任务(Cron Job) 登录您的服务器上的 shell,键入 "sudo crontab -e",然后输入类似以下内容的文字:
30 14 * * * php path/to/some/phpscript.php

在这个例子中,phpscript.php将会在每天14:30(下午2点半)运行。但这并不意味着它会每天给所有用户发送电子邮件!请参见下面的脚本。
PHP脚本:
<?php
# get all users (or your query could choose only users who signed up (4 weeks)*n ago)
$result = mysql_query('SELECT * FROM user');
$users = array();
while($row = mysql_fetch_assoc($result)) $users[] = $row;

# loop through users and (if you didn't already check) see which ones have signed up (4 weeks)*n ago
foreach ($users as $user) {
    # take the number of seconds and convert it to number of days
    $today = (int)(strtotime(date('c')) / 60 / 60 / 24);
    $signup_day = (int)(strtotime($user['signup_date']) / 60 / 60 / 24);
    # check if the amount of days since signup is a multiple of 28 (4*7)
    if (($today - $signup_day) && ($today - $signup_day) % 28 == 0) {
        send_mail_to($user);
    }
}
?>

好的,这听起来像是我需要的!但是我有点困惑...即使它每天以230运行,但从技术上讲它并不是?为什么呢? - anthony
它将在每天的2:30运行脚本,但脚本本身会检查所有用户和日期,并且仅发送正确的电子邮件。 - murftown
我明白了...它每天运行起来非常高效吗?还是说这已经是最好的选择了..... - anthony
1
每天运行30行的小脚本并不低效。电脑每天可以运行数百万行代码而毫不费力! - murftown
我使用免费的流行托管服务,它也提供数据库。我会说他们的硬件资源很差,所以我不介意将cronjob设置为每天运行一次而不是每1分钟运行一次:D - Erikas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接