簡體   English   中英

Laravel 6 | 可配置的作業,將模型附加到作業

[英]Laravel 6 | Configurable Jobs, attaching a model to a job

問題

所以我基本上希望能夠擁有附加到用戶的作業,並且用戶能夠調整有關作業的信息(預定時間、名稱、描述等)。

我的想法

我曾想過有一個主作業可以運行一張作業表,該表有它們應該運行的時間和所有信息,但這似乎是一種非常笨拙的方式。 我想知道是否有更好的選擇,我知道他們已經有工作監控包了,但似乎沒有一個是為了向客戶展示而設計的,而更多是為了向開發人員展示。

那么是否有某種方式可以讓用戶附加到某些作業,同時還能夠配置它運行的日期/時間? 我想嘗試獲得的格式如下所示。

[
    "id" => 1,
    "name" => "Test Job",
    "description" => "This is a test job.",
    "instigator_id" => 58,
    "time_scheduled" => "INSERT CARBON DATE HERE",
    "internal" => false,
    "date_created" => "",
    "last_updated" => ""
]

在這種情況下,它不必是任務調度程序。 您實際上正在尋找一個接口來調度作業。 這意味着您可以從控制器調用調度。 然后您可以在表中查找當前作業。 如果您使用抽象基礎作業鏈接作業。 這與用戶有關。 如果作業有任何相關的其他模型或序列化模型。 您可以將它們附加到作業中。 這樣您就可以根據您的條件過濾隊列中的作業。

您從構造函數分配為公共屬性的每個模型都將自動序列化和反序列化(只要您在工作中使用 SerializesModels 特征)

作業可以自動序列化雄辯的模型。 如果您有自定義類,也可以這樣做。 你只需要實現Serializable接口

那么如果一個作業,可能會消耗和處理數據。 你應該實現和 restart() 方法。 或者其他的東西。 這可能會保存可以保存的數據,並生成或安排新作業。

但是,如果您想在運行期間制作可中斷的作業,就像您想取消它一樣。 正如你所說,你可能不得不實施類似的東西。 這將檢查是否有人請求中斷。

這可以通過多種方式完成,具體取決於您的解決方案的規模。 一種簡單的方法是使用緩存驅動程序使用鎖。 但是在高負載下,這可能會帶來一些回抽。

暫無
暫無

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

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