Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为基于web的应用程序实现自动提醒电子邮件功能_Php_Html_Web Applications_Cron_Email - Fatal编程技术网

Php 为基于web的应用程序实现自动提醒电子邮件功能

Php 为基于web的应用程序实现自动提醒电子邮件功能,php,html,web-applications,cron,email,Php,Html,Web Applications,Cron,Email,我想为我的web应用程序创建一个功能,一旦用户进入我的数据库,每4周向他们发送一封电子邮件,提醒他们,例如,提供一些反馈。我听说cron作业是我想要的,但我很好奇还有什么其他的东西,可能有一个php脚本存在或一个简单的方法来做吗 我想要一个倒计时,从他们进入数据库开始倒计时,直到4周过去,然后调用一个php文件或其他东西,向他们发送我选择的电子邮件。如果这是可能的,让我知道!谢谢我想说的是使用cron作业(它可以每天在某个特定的时间运行,发送电子邮件会很好),cron作业可以调用一个php脚本,

我想为我的web应用程序创建一个功能,一旦用户进入我的数据库,每4周向他们发送一封电子邮件,提醒他们,例如,提供一些反馈。我听说cron作业是我想要的,但我很好奇还有什么其他的东西,可能有一个php脚本存在或一个简单的方法来做吗


我想要一个倒计时,从他们进入数据库开始倒计时,直到4周过去,然后调用一个php文件或其他东西,向他们发送我选择的电子邮件。如果这是可能的,让我知道!谢谢

我想说的是使用cron作业(它可以每天在某个特定的时间运行,发送电子邮件会很好),cron作业可以调用一个php脚本,该脚本将检查所有用户的注册时间,并查看是否有人在4周前注册(或其中的几倍)。对于满足此条件的任何人,都可以通过一个循环,使用mail()函数向他们发送电子邮件

Cron作业

登录服务器上的shell并键入“sudo crontab-e”,然后键入如下内容:

30 14 * * * php path/to/some/phpscript.php
在本例中,phpscript.php将在每天14:30(下午2:30)运行。但这并不意味着它会每天给所有用户发电子邮件!请参见下面的脚本

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英里,从技术上讲它不是吗?为什么?它会在每天2:30运行脚本,但是脚本本身会检查所有的用户和日期,并且只发送正确的电子邮件。我明白了……它每天运行的效率高吗?或者这几乎是最好的选择……每天运行一个30行的小脚本并不是低效的。计算机一天可以运行数百万行代码,而不必费吹灰之力!嗯,我使用免费的流行主机,它也提供数据库。我会说他们的硬件资源真是垃圾,所以我不介意让cronjob每天运行,而不是每1分钟运行一次:D