【发布时间】: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 队列?
【问题讨论】: