laravel隊(duì)列、消息通知和觀察者模式的理解

推薦
設(shè)計(jì)模式-PHP觀察者設(shè)計(jì)模式
laravel事件監(jiān)聽(tīng)--模型事件新特性
深入了解laravel消費(fèi)隊(duì)列的兩種工作模式

看了laravel手冊(cè),有時(shí)候不太理解隊(duì)列柑晒、觀察者模式、通知等眷射,這些功能的區(qū)別匙赞。想著直接在方法中處理數(shù)據(jù)庫(kù)不一樣嗎?

  • 隊(duì)列理解
    其實(shí)隊(duì)列適用于處理那些處理時(shí)間比較長(zhǎng)的時(shí)間的事情妖碉,一般來(lái)說(shuō)是針對(duì)短信涌庭,郵件獲取其他與第三方接口對(duì)接的應(yīng)用比較實(shí)用。其實(shí)隊(duì)列是把事件往數(shù)據(jù)庫(kù)或者redis等驅(qū)動(dòng)里面做了一次記錄欧宜。如果你的事件只是需要改動(dòng)數(shù)據(jù)表中的某個(gè)字段值的話坐榆,則不如直接對(duì)數(shù)據(jù)庫(kù)做修改比較方便,而不要實(shí)用隊(duì)列冗茸。
    隊(duì)列并不會(huì)使程序變得更快席镀,它是為了讓數(shù)據(jù)變得合法。比如你完成了一個(gè)任務(wù)夏漱,需要做相應(yīng)的積分處理豪诲,這個(gè)時(shí)候,可能會(huì)涉及到計(jì)算量比較大麻蹋,一步步計(jì)算跛溉,所以可以放在隊(duì)列里面去執(zhí)行,即使計(jì)算量比較大,也會(huì)一步步來(lái)芳室,不會(huì)導(dǎo)致系統(tǒng)崩潰专肪。而創(chuàng)建任務(wù)后分發(fā)給每個(gè)用戶,就不需要使用隊(duì)列堪侯,因?yàn)闆](méi)意義嚎尤。分發(fā)也是一條SQL語(yǔ)句搞定的事情

  • 消息通知
    消息通知和直接對(duì)數(shù)據(jù)庫(kù)修改也是一樣的。只是佸?通知多了「頻道(via)」這個(gè)概念伍宦。你可以比較方便的切換實(shí)用郵件(toMail)芽死,還是實(shí)用數(shù)據(jù)庫(kù)(toDatabase)通知。如果你百分比確定只實(shí)用數(shù)據(jù)庫(kù)通知次洼,其實(shí)你根本不需要實(shí)用消息通知這中寫法
    對(duì)了关贵,如果你需要通知的類做了implements ShouldQueue的實(shí)例化,則默認(rèn)會(huì)放到隊(duì)列中處理卖毁。
    對(duì)了揖曾,如果使用隊(duì)列,則先后時(shí)間可以很好的把控亥啦。如果不適用隊(duì)列炭剪,則在數(shù)據(jù)庫(kù)中做一個(gè)隊(duì)列時(shí)間先后順序即可。不過(guò)這樣的話翔脱,就沒(méi)有隊(duì)列優(yōu)先級(jí)的概念了奴拦。但是依然可以添加一個(gè)字段作為優(yōu)先級(jí),按照優(yōu)先級(jí)和時(shí)間排序顯示即可届吁。order by height,create_time

  • 事件系統(tǒng)
    其實(shí)事件系統(tǒng)主要是使用了觀察者模式错妖。這個(gè)跟以上兩種情況不一樣。
    之前看到一篇文章講解的是在注冊(cè)功能中的使用瓷产。如果你注冊(cè)后站玄,需要給用戶發(fā)送短信,注冊(cè)時(shí)間記錄等多個(gè)操作濒旦,你可能需要不斷的擴(kuò)展。但是使用了事件系統(tǒng)再登,你就可以很方便的處理這些問(wèn)題尔邓。代碼看上去更加簡(jiǎn)潔。但還是那句話锉矢,如果你只有一項(xiàng)需求觸發(fā)梯嗽,還是直接處理數(shù)據(jù)庫(kù)即可
    laravel事件監(jiān)聽(tīng)--模型事件新特性

應(yīng)用觀察者模式的好處:
觀察者模式解除了主體和具體觀察者的耦合,讓耦合的雙方都依賴于抽象沽损,而不是依賴具體灯节。從而使得各自的變化都不會(huì)影響另一邊的變化。降低對(duì)象之間的耦合度以達(dá)到解耦的目的,符合"開(kāi)閉原則"的要求炎疆。

laravel 框架中卡骂,我分別使用了databasesync兩種模式測(cè)試了隊(duì)列,說(shuō)明隊(duì)列確實(shí)是要過(guò)數(shù)據(jù)庫(kù)的

隊(duì)列測(cè)試

隊(duì)列

在隊(duì)列中形入,實(shí)例化 implements ShouldQueue 才會(huì)異步執(zhí)行全跨。

<?php
namespace App\Jobs;
use Illuminate\Contracts\Queue\ShouldQueue;
class SendEmail implements ShouldQueue
{
.
.
.
 public function __construct($user)
    {
        $this->delay(5); // 這是多少秒之后執(zhí)行程序,適用于支付
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末亿遂,一起剝皮案震驚了整個(gè)濱河市浓若,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蛇数,老刑警劉巖挪钓,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耳舅,居然都是意外死亡碌上,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門挽放,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绍赛,“玉大人,你說(shuō)我怎么就攤上這事辑畦÷鸢觯” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵纯出,是天一觀的道長(zhǎng)蚯妇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)暂筝,這世上最難降的妖魔是什么箩言? 我笑而不...
    開(kāi)封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮焕襟,結(jié)果婚禮上陨收,老公的妹妹穿的比我還像新娘。我一直安慰自己鸵赖,他們只是感情好务漩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著它褪,像睡著了一般饵骨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茫打,一...
    開(kāi)封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天居触,我揣著相機(jī)與錄音妖混,去河邊找鬼。 笑死轮洋,一個(gè)胖子當(dāng)著我的面吹牛制市,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砖瞧,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼息堂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了块促?” 一聲冷哼從身側(cè)響起荣堰,我...
    開(kāi)封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎竭翠,沒(méi)想到半個(gè)月后振坚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斋扰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年渡八,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片传货。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屎鳍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出问裕,到底是詐尸還是另有隱情逮壁,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布粮宛,位于F島的核電站窥淆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏巍杈。R本人自食惡果不足惜忧饭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筷畦。 院中可真熱鬧词裤,春花似錦、人聲如沸鳖宾。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)攘滩。三九已至,卻和暖如春纸泡,著一層夾襖步出監(jiān)牢的瞬間漂问,已是汗流浹背赖瞒。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚤假,地道東北人栏饮。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像磷仰,于是被迫代替她去往敵國(guó)和親袍嬉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,394評(píng)論 8 265
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,938評(píng)論 2 89
  • 1灶平、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,982評(píng)論 3 119
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評(píng)論 25 707
  • 講一個(gè)我最近很感動(dòng)和印象深刻的事兒吧: 大前天的清晨即將從北方返回南方工作 坐在短途大巴車上時(shí) 我后方坐著一個(gè)男孩...
    Ruueryee閱讀 231評(píng)論 0 0