gpt4 book ai didi

php - 如果任何作业失败,Cron 作业会自动重试

转载 作者:行者123 更新时间:2023-12-04 11:30:59 24 4
gpt4 key购买 nike

我有一个每 5 小时运行一次的 cron 作业。它调用 PHP script ,此脚本将调用外部 API 以同步一些数据。
问题是有时我会从 API 超时,并且作业将失败。
是否有任何机制可以让 cron tab 自动重试或自动恢复失败的作业?
我试图做一项额外的工作,并在出现任何故障时手动调用它。
这样做的最佳方法是什么?

最佳答案

Cron 只运行 一次 在特定时间或每分钟/小时/天等。它不检查返回代码。所以这不是那么容易的 peasy 柠檬挤压...

在我看来,您有几种选择方法:

  • 创建某种调度程序,如果它失败,您可以在其中再次编写 CRON 作业,在这种情况下,您将需要另一个 CRON 作业来读取您的调度程序并运行正确的命令。调度器可以基于数据库/文件/NoSQL。在调度程序中,您可以拥有像 (bool) executed 这样的标志这将使调度程序知道哪些任务已经完成。
  • 使用队列(例如兔子)在失败时再次调用它。
  • 使用框架,我使用 Symfony 来管理自己创建的命令以根据数据库执行它们(检查下面的第二个链接),还使用 ​​enqueue/enqueue-bundle 包来管理 Symfony 中的队列。

  • 我认为如果您对 PHP 不是那么先进,我建议您使用 Symfony 使用基于数据库(MySQL/PostgreSQL/NoSQL)的自制调度程序(检查下面的第二个链接)。在这种情况下,您只需要 SELECT来自数据库的所有未执行的记录(命令)并运行它们。

    讲座

    Laravel - Queues, retrying failed jobs

    Symfony - calling another commands in command

    Queues package for PHP (incl. Symfony)

    enqueue/enqueue-bundle

    关于php - 如果任何作业失败,Cron 作业会自动重试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543582/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com