我刚刚制作了一个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,我会在我完成这个网站后立即开始
答案 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/