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

时间:2017-11-16 13:34:23

标签: php mysql

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

如果客户端设置时间为每天我想运行文件(reportemail),我想每天早上发送电子邮件..我想这样做只在localhost中,而不是在server.and我希望这应该是如果系统也处于关闭模式,则会发生。

我已经尝试过使用cron.bat文件它工作正常,但手动我给了时间..而不是手动给我想要动态提供。

以下是我在cron.bat文件中的做法

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

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

<script>
    setTimeout(function () {
        window.location.reload();
    }, 5 * 60 * 1000);

    document.write(new Date());
</script>

1 个答案:

答案 0 :(得分:1)

使用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更新记录。