使用php和mysql发送提醒电子邮件没有cron-job?

时间:2013-05-27 14:40:17

标签: php mysql email reminders

我刚刚制作了一个PHP脚本,它将在约会开始前2天向网站管理员发送电子邮件提醒。我打算自动化脚本来运行一个cron作业,只是意识到我主持的人(疯狂的域名)似乎没有Cron Jobs

在没有cron-jobs的情况下,有没有办法做到这一点?如果是这样的话,我不介意去另一家服务提供商;我已经做了相当多的搜索,到目前为止我的理解是我需要Cron Jobs来处理这些类型的事情?

这是我到目前为止所做的脚本:

<?php include "../connect-to-database.php";  ?>

<?php   
    $date = date("Y-m-d");
    $mod_date = strtotime($date."+ 2days");
    $newDate = date("m/d/Y",$mod_date);

    $sqlCommand = "SELECT * FROM eventcalender WHERE eventDate='$newDate'" ;
    $query = mysql_query($sqlCommand) or die(mysql_error());
    $count = mysql_num_rows($query);

if ($count >= 1){
        while($row = mysql_fetch_array($query)){
            $ID = $row["ID"];
    $schedule_title = $row["Title"];
    $schedule_description = $row["Detail"];
    $importance_level = $row["importance_level"];
    $meeting_datetime = $row["eventDate"];
    $contacts_involved = $row["contacts_involved"];
    $meeting_occurred = $row["meeting_occurred"];

    $mid = mysql_insert_id();
    $search_output .= "<ul>
                <li>
                    <h4>".$schedule_title."</h4>
                    <p><b>Time: ".$meeting_datetime."</b></p>
                    <p>People/Persons involved: ".$contacts_involved."</p>
                    <p>Meeting Occurred?: ".$meeting_occurred."</p>
                    <a href='uniqueMeeting.php?ID=".$ID."'>View more details of this meeting</a>
                    <p><a href='editschedulePage.php?mid=$ID'>Edit This Meeting</a></p>
                    <p><a href='scheduleList.php?deleteid=$ID'>Delete this meeting</a></p>
                </li><br/>                  
            </ul>";

            $sendMail = true;
        }

}

if($sendMail){  
    $admin = "SELECT * FROM admin" ;
    $queryAdmin = mysql_query($admin) or die(mysql_error());
    $adminCount = mysql_num_rows($queryAdmin);
    $recipients = array();
        if ($count >= 1){
            while($row = mysql_fetch_array($queryAdmin)){

            $subject ='A-CRM; UpComing Activities';
            $msg = $search_output; 
            $to = $row['email_address'];
            mail($to, $subject, $msg);
            }   
        }
}

?>

是的我确实意识到我是一个绝对可怕的人,因为我没有使用mysqli,我会在我完成这个网站后立即开始

4 个答案:

答案 0 :(得分:4)

如果经常访问您正在构建的站点,则可以在下次运行脚本时保留数据库中的时间戳(或日期时间等)。然后在您的网站中包含该脚本(每个页面或仅选择它们)。

如果当前时间等于或大于数据库中的时间,请运行脚本并将数据库中的时间设置为脚本接下来必须运行的值。通过这种方式,脚本将由网站的其中一个访问者执行,而他们不知道。

答案 1 :(得分:0)

替换

php include "../connect-to-database.php"; 

php include dirname(__DIR__) . "/connect-to-database.php"; 

答案 2 :(得分:0)

尝试添加一些Observer,以检查是否需要发送邮件。

例如 - 添加到您的init文件中(可能是index.php

<?php include DIR ."send_mail.php" ?> // your file that you describe in the question.

它将向DB添加一个额外的查询,因为每次用户进入页面时都会执行检查。

我希望它可以帮助您解决问题。

答案 3 :(得分:-3)

使用crons非常简单有效的方式。 crons非常简单,你将设置日期和时间cron自动运行你的文件。这是使用crontab的指南:http://www.adminschoice.com/crontab-quick-reference/