【问题标题】:Laravel Job vs Event when creating a 3rd party api call创建 3rd 方 api 调用时的 Laravel Job vs Event
【发布时间】:2018-05-27 09:09:56
【问题描述】:

我想知道在Laravel 中进行第 3 方 api 调用的最佳做法是什么。

  • 创建一个 Job,在 handle() 函数中调用 API,然后使用 Job::dispatch() 从控制器实际调用它。

  • 创建一个在其侦听器中具有 API 调用的事件,并使用控制器中的Event::fire()

  • 或者在 Job 调用 API 的地方创建一个 Event 和 Job,Event 调度作业,并且事件本身从控制器中触发。

我希望作业是非阻塞的,以便我的控制器代码在作业被调度或事件被触发时不会阻塞。

最佳做法是什么?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    它们通常相互交叉,简单来说,作业可以称为主动式,事件可以称为反应式。这取决于您希望您的系统如何。大多数开发人员在事件中创建工作。我最近看到的另一点是大多数程序员将服务用于业务逻辑。服务不仅仅是普通类,它们位于包含业务逻辑的单独文件夹(主要命名为服务)中。控制器仅用于 IO 操作。如今,甚至验证也是分开的。

    【讨论】:

    • 我用了crossover,意思是在Event中创建了Job。在控制器中使用Event::fire(),在事件中使用Job::dispatch()但控制器仍然阻塞。,这意味着如果我在作业中放置一个 sleep(10),我的浏览器会挂起 10 秒,而它不应该挂起。
    • 找到了使其成为非阻塞的解决方案,队列配置应该使用sync以外的东西作为队列驱动程序。这个 SO 答案 (stackoverflow.com/questions/39006287/…) 帮助很大。
    猜你喜欢
    • 2020-04-13
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2011-09-22
    相关资源
    最近更新 更多