日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Laravel8隊(duì)列系統(tǒng)的新功能和變化有哪些

本文將為大家詳細(xì)介紹“Laravel 8 隊(duì)列系統(tǒng)的新功能和變化有哪些”,內(nèi)容步驟清晰詳細(xì),細(xì)節(jié)處理妥當(dāng),而小編每天都會(huì)更新不同的知識(shí)點(diǎn),希望這篇“Laravel 8 隊(duì)列系統(tǒng)的新功能和變化有哪些”能夠給你意想不到的收獲,請(qǐng)大家跟著小編的思路慢慢深入,具體內(nèi)容如下,一起去收獲新知識(shí)吧。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了宣恩免費(fèi)建站歡迎大家使用!

Laravel 是什么

Laravel 是一套簡(jiǎn)潔、優(yōu)雅的PHP Web開(kāi)發(fā)框架。它可以讓你從面條一樣雜亂的代碼中解脫出來(lái);它可以幫你構(gòu)建一個(gè)完美的網(wǎng)絡(luò)APP,而且每行代碼都可以簡(jiǎn)潔、富于表達(dá)力。

Laravel 8 附帶了很酷的新特性,并對(duì)隊(duì)列系統(tǒng)的一些更改。在本文中,我們將研究這些特性和更改。

變化


Backoff (回退)

已將 retryAfter() 方法和 retryAfter 排隊(duì)作業(yè),郵件,通知和偵聽(tīng)器的屬性重命名為backoff

php artisan queue:work 命令的 --delay 選項(xiàng)也已重命名為 --backoff。

您還應(yīng)該知道,現(xiàn)在可以將數(shù)組傳遞給 backoff 屬性,以指示 worker 實(shí)現(xiàn)指數(shù)回退 (exponential backoff):

public $backoff = [30, 60];

或者從 backoff() 方法返回一個(gè)數(shù)組:

public function backoff()
{
    return [30, 60]; 
}

在這里使用指數(shù)回退,我們指示 worker 在第一次失敗后延遲 30 秒重試作業(yè),然后在每次失敗后延遲 60 秒。

您還可以在 queue:work 命令上使用指數(shù)回退:

php artisan queue:Work --backoff=30,60

作業(yè)過(guò)期

排隊(duì)作業(yè),通知和偵聽(tīng)器的 timeoutAt 屬性已重命名為 retryUntil。

使用 $retryUntil 指示 worker 繼續(xù)重試作業(yè),直到將來(lái)的某個(gè)時(shí)間為止。

您可以將 retryUntil 作為作業(yè)類的公共屬性或 retryUntil 方法添加:

public function retryUntil()
{
    return now()->addDay();
}

新特性

隊(duì)列閉包

您現(xiàn)在可以在調(diào)度隊(duì)列閉包時(shí)鏈?zhǔn)秸{(diào)用 catch() 方法:

dispatch(function () {
    // Job logic...
})->catch(function (Throwable $e) {
    // Handle Failure...
});

如果作業(yè)失敗,將調(diào)用提供給 catch() 方法的閉包。

數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序可靠性

當(dāng)使用數(shù)據(jù)庫(kù)隊(duì)列驅(qū)動(dòng)程序?qū)⒆鳂I(yè)釋放回隊(duì)列時(shí),Laravel 現(xiàn)在將在事務(wù)內(nèi)執(zhí)行操作。這意味著除非添加了新的已發(fā)布實(shí)例,否則不會(huì)從隊(duì)列中刪除作業(yè)。這大大減少了作業(yè)失敗的機(jī)會(huì)。

redis 驅(qū)動(dòng)程序效率

當(dāng)使用 Redis 隊(duì)列驅(qū)動(dòng)程序批量分發(fā)一組作業(yè)時(shí), Laravel 將通過(guò)向 Redis 發(fā)送單個(gè)命令來(lái)執(zhí)行操作。以前, Laravel曾經(jīng)向 Redis 發(fā)送多個(gè) rpush 命令,每個(gè)作業(yè)一個(gè)。

Worker 優(yōu)雅終止

從 Laravel 8 開(kāi)始, Workers 將優(yōu)雅退出,并調(diào)用由 App::Terminating() 注冊(cè)的任何終止回調(diào)。

Worker 自我終止

為了避免內(nèi)存泄漏,通常的做法是不時(shí)終止您的工作程序,然后讓您的過(guò)程監(jiān)視工具啟動(dòng)新的工作程序。通常是通過(guò)添加一個(gè)運(yùn)行 queue:restart 令的CRON作業(yè)來(lái)完成的。

在 Laravel 8中,您可以指示 Workers 在處理了一定數(shù)量的作業(yè)或運(yùn)行了特定的秒數(shù)后退出:

php artisan queue:work --max-jobs=1000 --max-time=3600

命名 Workers

你現(xiàn)在添加 --name 選項(xiàng)到 queue:work 命令:

php artisan queue:work --name=notifications

添加此功能的主要目的是允許人們自定義 Workers 在運(yùn)行時(shí)如何選擇哪個(gè)隊(duì)列來(lái)處理任務(wù):

Worker::popUsing('notifications', function ($pop) {
    $queues = time()->atNight() 
        ? ['mail', 'webhooks'] 
        : ['push-notifications', 'sms', 'mail', 'webhooks'];

    foreach ($queues as $queue) {
        if (! is_null($job = $pop($queue))) {
            return $job;
        }
    }
});

任務(wù)批處理

Laravel 的任務(wù)批處理使您可以分派許多任務(wù),以供您的 Workers 并行處理。 您可以在批處理中的所有任務(wù)都處理完畢或任何批處理任務(wù)失敗后執(zhí)行操作:

Bus::batch([
    new ProcessFile(1),
    new ProcessFile(2),
    new ProcessFile(3),
])->dispatch();

您可以在官方文檔中找到有關(guān)“作業(yè)批處理”的更多信息。

作業(yè)鏈

您現(xiàn)在可以使用 Bus 直接調(diào)度一系列作業(yè):

Bus::chain([
    new ExtractReports,
    new GenerateReport,
    new SendResults,
])->dispatch();

您還可以添加一個(gè) catch() 回調(diào),如果鏈中的任何作業(yè)失敗都會(huì)被調(diào)用:

Bus::chain([
    new ExtractReports,
    new GenerateReport,
    new SendResults,
])->catch(function(){
    // Handle the chain failure.
})
->dispatch();

Horizon 平衡率

Horizon 中添加了兩個(gè)新的配置選項(xiàng): balanceMaxShift and balanceCooldown

 'environments' => [
    'environment' => [
        'supervisor-1' => [
            'balanceMaxShift' => 5,
        ],
    ],
],

balanceMaxShift 設(shè)置每次 Horizon 擴(kuò)展工作程序池時(shí)要添加或刪除的最大工作進(jìn)程數(shù)。在 Horizon 的早期版本中,僅添加或刪除了一個(gè)工作進(jìn)程,現(xiàn)在您可以控制該數(shù)目。

至于 balanceCooldown ,它設(shè)置每個(gè)縮放操作之間等待的秒數(shù)。在 Horizon 的早期版本中,這被硬編碼為3秒。

 'environments' => [
    'environment' => [
        'supervisor-1' => [
            'balanceCooldown' => 1,
        ],
    ],
],

如果你能讀到這里,小編希望你對(duì)“Laravel 8 隊(duì)列系統(tǒng)的新功能和變化有哪些”這一關(guān)鍵問(wèn)題有了從實(shí)踐層面最深刻的體會(huì),具體使用情況還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)標(biāo)題:Laravel8隊(duì)列系統(tǒng)的新功能和變化有哪些
鏈接地址:http://www.dlmjj.cn/article/ghhsjs.html