3 回答

TA贡献1878条经验 获得超4个赞
Cron 只在特定时间或每分钟/小时/天等运行一次。它不检查返回码。所以这根本不是那么容易的peasy柠檬挤压......
在我看来,你有几个选择如何做到这一点:
创建某种调度程序,如果它失败,您可以再次编写您的 CRON 作业,在这种情况下,您将需要一个更多的 CRON 作业来读取您的调度程序并运行正确的命令。调度程序可以是基于数据库/文件/NoSQL 的。在调度程序中,您可以使用类似
(bool) executed
which 的标志,让调度程序知道哪些任务已经完成。失败时使用队列(例如 Rabbit)再次调用它自己。
使用框架,我使用 Symfony 管理自己创建的命令以基于数据库执行它们(检查下面的第二个链接),还使用 enqueue/enqueue-bundle 包来管理 Symfony 中的队列。
我认为,如果您对 PHP 不是那么先进,我建议您使用 Symfony 使用基于数据库(MySQL / PostgreSQL / NoSQL)的自制调度程序(检查下面的第二个链接)。在这种情况下,您只需SELECT
从数据库中获取所有未执行的记录(命令)并运行它们。

TA贡献1829条经验 获得超7个赞
你可以做的是这样的:
https://crontab.guru/#1_0-23_13__
1 0-23 13 * *
每月 13 日每小时 1 分钟后开始工作。
“从第 13 天的 0 点到 23 点,每小时的第 1 分钟。”
...然后在您的代码中,您将有一些逻辑来检测进程\脚本是否已经正确运行...如果是,请跳过运行尝试;否则让它运行,然后设置一个标志以检查后续尝试运行。
希望你能明白。
- 3 回答
- 0 关注
- 245 浏览
添加回答
举报