我想根据客户端的可能性运行我的php文件



我有一个名为reportemail.php文件的php文件,我有一条下拉列表,其中包含3个值,如每日、每周、每月

如果客户端将时间设置为每天,我想运行文件(报告电子邮件),并且我想每天早上发送电子邮件。。我只想在本地主机上做这件事,而不是在服务器上。我希望如果系统也处于关闭模式,也应该这样做。

我已经尝试过使用cron.bat文件,它运行良好,但在那里我手动给了时间。。我想动态地给予,而不是手动给予。

以下是我在cron.bat文件中的操作

E:xamppphpphp.exe -f E:xampp/htdocs/custom/reportemail.php

在reportemail.php文件中,我有我的电子邮件代码和类似的脚本代码

<script>
setTimeout(function () {
window.location.reload();
}, 5 * 60 * 1000);
document.write(new Date());
</script>

在这里使用cron仍然是可行的。您只想将调度程序与计划的事件稍微分开一点。

不要试图让用户创建/修改cron作业调度本身。相反,安排一个通用的cron作业在最窄的时间范围内执行(每天)。那项工作就是:

  • 检查计划运行的用户报告
  • 检查这些报告上次成功运行的时间以及是否需要再次运行
  • 运行报告

因此,您的用户只需将一条记录保存到数据库中,指示何时运行他们的报告,而不是安排cron作业。例如,考虑这样一个表:

UserReports
----------
ID (PK)
UserID (which user)
ReportID (which report to run)
ScheduleID (which frequency - daily, weekly, etc.)
LastRunDate (date of the last successful run)

任何时候执行cron作业时,它都会从该表中选择符合条件的任何记录:

  • ScheduleID为每日,LastRunDate为1天以上,或者
  • ScheduleID为每周,LastRunDate为7天以上,或者
  • ScheduleID为每月一次,LastRunDate为1个多月前

循环浏览符合这些条件的记录,运行报告,使用当前的新LastRunDate更新记录。

最新更新