【问题标题】:Call api every 20s - error "Maximum Execution Time' [closed]每 20 秒调用一次 api - 错误“最大执行时间”[关闭]
【发布时间】:2021-08-22 20:12:01
【问题描述】:

我想在 Laravel 应用中每 20 秒调用一次 api。

我在使用命令 dispatchAfterResponse 启动的作业中创建了一个最终休眠 20 秒的循环,但一段时间后我仍然收到错误“最大执行时间”。

我们不能使用 cron 作业,因为最短周期是 100 万。有什么想法吗?

【问题讨论】:

  • 很容易有更好的方法 - 但也许将两者混合起来,睡 20s 3 次,每分钟从 cron 调用它?
  • @BrianThompson 这应该可以,即避免“最大执行时间”错误,但是当我发现“dispatchAfterResponse”时,我想我也可以避免这个错误(如 cli 脚本),我想知道是否有有任何 Laravel cde 可以直接做到这一点吗?
  • 没有。 Laravel 的调度器基于 cron,至少需要 1 分钟
  • @aynber 看到我的回答,我知道 Laravel 是基于 cron 的,它写在我的问题中!

标签: php laravel api cron


【解决方案1】:

我终于找到了解决方案,在 github 上有一个来自 spatie 的不错的包。

https://github.com/spatie/laravel-cronless-schedule

https://laravel-news.com/sub-minute-and-cron-less-scheduled-tasks-in-laravel

【讨论】:

    【解决方案2】:

    我认为这必须在客户端 (JS) 上完成,因为 PHP 在服务器上运行。 您应该尝试通过 ajax 请求调用 API 并使用 setInterval() 函数

    【讨论】:

    • 服务器到服务器
    • @Dri372 这必须在客户端完成。因为如果你在 PHP 端这样做,它不会真正起作用并导致问题。最后一个选项是 XMLHttpReqests (AJAX)。
    • 你看到我之前的评论和回答了吗。别忘了,没有服务器就没有客户端……没有 pb 的服务器可以每 20 秒运行一次 :-)
    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    相关资源
    最近更新 更多