【问题标题】:PHP: How to clear numerous static variables for a queued Laravel job?PHP:如何为排队的 Laravel 作业清除大量静态变量?
【发布时间】:2018-07-26 01:55:17
【问题描述】:

我有一个典型的 Laravel 应用程序,充分利用了 Eloquent。该应用程序的一部分涉及工资单。

进行“工资单运行”需要大量小任务一个接一个地运行。其中一些任务是应用程序的其他部分所需要的,例如PayrollRunner::getNextPayrollDates(),所以我将它们设为静态。静态方法引导我使用静态类属性,很快我发现自己使用静态方法和静态属性编写了整个“工资单运行器”。

这是我第一次真正大量使用静态,我不得不说对于这个用例来说感觉真的很自然。

一旦我的工资单运作良好,我就开始从排队的工作中触发它。 (处理可能需要相当长的时间)。但由于 artisan 队列在启动时会将整个应用程序读入内存,因此静态数据保持设置,直到队列被终止。

有什么简单的方法可以解决这个问题吗?我的 PayrollRunner 类有大量的静态方法和属性,所以以对象样式重写它是最后的手段。有没有一种方法可以重置类上的所有静态属性,而无需循环访问每个静态属性?

我看到这个答案说不,Is there any way to reset all static properties of a particular class?,但它已经很老了。

或者,有没有办法启动一个不保留作业之间静态状态的 Laravel 队列?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    首先避免这种情况会更好,但您可以继续运行运行单个队列作业的队列工作程序。它不会处于“守护进程”模式。作业处理完毕后,它将结束,需要启动新的工作人员。

    php artisan queue:work --once

    新的 PHP 进程,新的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      相关资源
      最近更新 更多