簡體   English   中英

PHP:如何清除排隊的Laravel作業的眾多靜態變量?

[英]PHP: How to clear numerous static variables for a queued Laravel job?

我有一個典型的Laravel應用程序,充分利用了Eloquent。 該應用程序的一部分處理薪資。

進行“工資核算運行”需要許多小任務,一個接一個地運行。 應用程序的其他部分需要其中一些任務,例如PayrollRunner::getNextPayrollDates() ,因此我將它們設置為靜態。 靜態方法使我傾向於使用靜態類屬性,很快我發現自己使用靜態方法和靜態屬性編寫了整個“工資單運行程序”。

這是我第一次真正大量使用靜態方法,我不得不說,對於這種用例來說,這確實很自然。

一旦薪水運轉良好,我便開始從排隊的作業中觸發它。 (處理可能需要一段時間。) 但是,由於技術人員隊列在引導時會將整個應用程序讀取到內存中,因此靜態設置將保持設置狀態,直到隊列被殺死為止。

有什么簡單的方法可以解決這個問題? 我的PayrollRunner類具有大量的靜態方法和屬性,因此以對象樣式重寫它是不得已的方法。 有沒有一種方法可以重置類上的所有靜態屬性,而無需循環遍歷每個類?

我看到這個回答說不, 是否有任何方法可以重置特定類的所有靜態屬性? ,但它已經很老了。

或者,是否有一種方法可以啟動不保留作業之間的靜態狀態的Laravel隊列?

最好首先避免這種情況,但是您可以繼續運行運行單個隊列作業的隊列工作器。 它不會處於“守護程序”模式。 處理完作業后,它將結束,並且需要開始新的工作人員。

php artisan queue:work --once

新的PHP流程,新的狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM