我有一个控制台程序,它只在当前日期为周日时运行,并为该程序设置下周日的目标日期(完成日期)。现在我想制作一个每周运行一次的程序,并将该程序的目标日期设置为7天后。例如,我的程序在周一运行,目标日期应该是下周一
$sunday = Date("D");
if($sunday == 'Sun') {
remaining function
}
我的第一个程序有这个逻辑。我在CakePhp控制台(Shell)中使用这个程序。第二个有帮助吗?
感谢
使用at
命令。它是cron
鲜为人知的表亲。它允许您在指定的日期和时间执行一次命令,可以是几年后。
根据你的描述,我认为你想在任何时候执行一个脚本,然后在7天后再次执行。这意味着您的PHP脚本将不得不安排自己再次运行。at
可能需要一个绝对时间或增量:
at -f /bin/ls now +7 days
将尝试在7天后输出一个目录列表(可能会以/dev/null结束,但那是另一回事)。您应该将/bin/ls替换为PHP脚本的完整路径,并从系统()调用中执行at
命令(它不是PHP本身的一部分)。这有点复杂,但可以保证脚本会被执行,即使在重新启动后也是如此。当然,脚本会重新安排自己,除非你采取对策。。。
当脚本在7天后运行时,其输出将不可见,因此请确保重定向输出或将其写入日志。