如何定义仅单次执行不重复的PHP CRON表达式?
一次性Cron任务配置方案
你使用的PHP Cron expression包支持带年份参数的扩展Cron表达式,直接配置固定年份即可实现仅执行一次的非周期性任务。
具体配置方法
扩展Cron表达式结构(该包支持)
扩展格式共6段,比标准系统Cron多了最后一位年份参数:分钟 小时 日期 月份 星期 年份
你要求的2021年11月23日上午11:11执行的表达式为
11 11 23 11 * 2021
其中*代表星期参数不做限制,因为已经指定了固定的年、月、日,星期参数不会影响匹配结果。
注意事项
- 该配置仅适用于支持年份扩展的Cron解析器,原生系统Cron不支持年份段,无法直接使用该表达式
- 该表达式仅会在2021年11月23日11:11匹配一次,过了该时间点后永远不会再次触发
- 如果你需要适配不支持年份段的Cron环境,可以在任务逻辑开头增加时间校验,示例代码如下:
// 指定目标执行时间 $executeTime = strtotime('2021-11-23 11:11'); // 仅在目标时间前后一分钟内触发实际逻辑,避免时间偏移导致执行失败 if (time() >= $executeTime && time() < $executeTime + 60) { // 此处写入你的实际业务代码 }
内容的提问来源于stack exchange,提问作者GaPa
相关产品推荐
相关产品推荐

