国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

基本用法

2018-02-24 15:52 更新

推送一個工作至隊列

應(yīng)用程序中能夠放進隊列的工作都存放在 App\Commands 目錄下,你可以借由下面 Artisan 命令產(chǎn)生一個可使用隊列的命令:

php artisan make:command SendEmail --queued

要推送一個新的工作至隊列,請使用 Queue::push 方法:

Queue::push(new SendEmail($message));

注意: 在這個例子當(dāng)中,我們直接使用 Queue Facade,然而,常見的作法是借由 Command Bus 去分派隊列命令。我們將會在這篇文章中繼續(xù)使用 Queue Facade,不過,也要熟悉使用 command bus,因為它能夠同時分派你的網(wǎng)站應(yīng)用程序中隊列與同步的命令。

默認情況下,make:command Artisan 命令會產(chǎn)生一個 "self-handling" 的命令,意味著命令里會包含一個 handle 方法。這個方法將會在隊列執(zhí)行時被調(diào)用。你可以在 handle 方法使用時提示傳入任何你需要的依賴,而 服務(wù)容器 會自動注入他們:

public function handle(UserRepository $users)
{
    //
}

如果你希望你的命令有獨立的處理類別,你可以在使用 make:command 命令時加上 --handler 標識。

php artisan make:command SendEmail --queued --handler

這個被產(chǎn)生出來的處理類別將會放在 App\Handlers\Commands 目錄下面,并且服務(wù)容器會自動解析。

指定隊列使用特定連接

你也可指定隊列工作送至指定的連接:

Queue::pushOn('emails', new SendEmail($message));

發(fā)送相同的數(shù)據(jù)去多個隊列工作

如果你需要發(fā)送一樣的數(shù)據(jù)去幾個不同的隊列工作,你可以使用 Queue::bulk 方法:

Queue::bulk([new SendEmail($message), new AnotherCommand]);

延遲執(zhí)行一個工作

有時候你可能想要延遲執(zhí)行一個隊列工作,舉例來說你希望一個隊列工作在客戶注冊 15 分鐘后才寄送 e-mail,你可以使用 Queue::later 方法來完成這件事情:

$date = Carbon::now()->addMinutes(15);

Queue::later($date, new SendEmail($message));

在這個例子中,我們使用 Carbon 日期類庫來指定我們希望隊列工作希望延遲的時間,另外你也可發(fā)送一個整數(shù)來設(shè)置你希望延遲的秒數(shù)。

注意: 在 Amazon SQS 服務(wù)中,有最大 900 秒( 15 分鐘 )的限制。

將 Eloquent 模型放進隊列

如果你隊列工作的構(gòu)造器接收一個 Eloquent 模型,只有這個模型的標記( identifier ) 會被序列化后放到隊列中。當(dāng)工作真正開始被處理的時候,隊列系統(tǒng)會自動從數(shù)據(jù)庫中重新取得完整的模型實例。這個對你的網(wǎng)站應(yīng)用程序來說是完全透明的,并且預(yù)防一些在序列化完整 Eloquent 模型實例時可能遇到的問題。

刪除一個處理中的工作

一旦一個工作被處理過后,這個工作必須從隊列中刪除。假如在工作執(zhí)行后沒有發(fā)生錯誤,這個將會自動完成。

如果你希望能夠手動刪除或著釋放工作,在 Illuminate\Queue\InteractsWithQueue trait 中提供 release 以及 delete 方法的接口。其中 release 方法接受單一一個值:你想要等待工作再次能夠執(zhí)行的秒數(shù)。

public function handle(SendEmail $command)
{
    if (true)
    {
        $this->release(30);
    }
}

釋放一個工作回到隊列中

假如在工作執(zhí)行后發(fā)生錯誤,這個工作將會自動被釋放回到隊列之中,如此一來便能夠再次嘗試執(zhí)行工作。工作會一直被釋放回隊列直到到達應(yīng)用程序的嘗試上限。這個上限數(shù)值可以在使用 queue:listen 或 queue:work Artisan 命令時候借由 --tries 開關(guān)來設(shè)置。

檢查工作執(zhí)行次數(shù)

當(dāng)一個工作執(zhí)行后發(fā)生錯誤,這個工作將會自動的釋放回隊列當(dāng)中,你可以透過 attempts 方法來檢查這個工作已經(jīng)被執(zhí)行的次數(shù):

if ($this->attempts() > 3)
{
    //
}

注意: 你的命令處理類別必須使用 Illuminate\Queue\InteractsWithQueue 這個 trait 才能夠使用這個方法。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號