我有一个应用程序,我们可以通过 cron 作业和 PHP 函数生成计划 - 每月、每季度和半年。这些设置非常容易,我们只需将相关月份数字存储在数据库表中,在每个月的第一天运行该函数,如果存储的计划月份与当前月份匹配,则生成一个作业。
我们现在需要制定一个时间表,在某个月份运行一次,但每两年运行一次。
在这种情况下,我们存储月份和起始年份 - 我们将有一些从今年(2024 年)开始,一些从未来几年开始(2025 年、2026 年等)。我很难弄清楚如何检查当前年份是否是自第一年以来 2 年的倍数。
例如,2024 年创造的就业机会必须在 2024、2026、2028、2030 年等运行。 2025 年创造的就业机会必须在 2025、2027、2029、2031 年等运行。如何根据当前年份计算当前年份是否是第一年之后2年的倍数?
我尝试使用模运算符来计算它,但我的数学不是那么好(假设它可以用模来完成)。我想我也许可以用当前年份减去开始年份,然后看看结果是否能被 2 整除。如果现在是 2026 年 - 2026-2024 % 2 = 0。但是到了 2028 年,我该如何做,其中 2028-2024 % 2 = 2 的结果呢?
另一种方法是与一系列年份进行比较,但如果可能的话,我宁愿选择更动态的选项。
您应该将“上次发生年份”和“下次发生年份”存储在数据库中。这样您就可以摆脱额外的计算,甚至可以获得更具体的数据。
例如,2024 年创造的就业机会必须在 2024、2026、2028、2030 年等运行。
那么最后发生的年份将为空,但下一个发生的年份将为 2024 年。因此,每当您的作业运行时,它都会自行更新流程的其余部分。