PHP-Beanstalkd消息隊(duì)列 延遲隊(duì)列的搭建使用

介紹:

Beanstalkd,一個(gè)高性能堂竟、輕量級(jí)的分布式內(nèi)存隊(duì)列系統(tǒng)魂毁,最初設(shè)計(jì)的目的是想通過后臺(tái)異步執(zhí)行耗時(shí)的任務(wù)來降低高容量Web應(yīng)用系統(tǒng)的頁面訪問延遲,支持過有9.5 million用戶的Facebook Causes應(yīng)用出嘹。后來開源席楚,現(xiàn)在有PostRank大規(guī)模部署和使用,每天處理百萬級(jí)任務(wù)疚漆。Beanstalkd是典型的類Memcached設(shè)計(jì)酣胀,協(xié)議和使用方式都是同樣的風(fēng)格,所以使用過memcached的用戶會(huì)覺得Beanstalkd似曾相識(shí)娶聘。

依賴環(huán)境:

>=PHP7.0??

>=Centos7.0?

最好是寶塔的Lnmp

supervisor 進(jìn)程管理工具

Pheanstalk PHP簡單操作類

安裝與使用:

一、安裝Beanstalkd

官網(wǎng)地址:

????https://kr.github.io/beanstalkd/

1.Centos安裝:

????yum install beanstalkd --enablerepo=epel

2.源碼安裝:

????源碼下載地址:http://kr.github.io/beanstalkd/download.html

????tar -zxvf /usr/bin/beanstalkd/beanstalkd-1.10.tar.gzcdbeanstalkdmake

?????install

?????PERFIX=/usr/bin/beanstalkd

3.啟動(dòng):

????/usr/bin/beanstalkd -l 0.0.0.0 -p11300 -b /var/lib/beanstalkd/binlog -F &

????beanstalkd參數(shù):

????/usr/bin/beanstalkd -h

????Use:/usr/bin/beanstalkd [OPTIONS]

????Options:

????-b 開啟binlog甚脉,斷電后重啟會(huì)自動(dòng)恢復(fù)任務(wù)丸升。

????-f MS fsync最多每MS毫秒-F從不fsync(默認(rèn))

????-l ADDR偵聽地址(默認(rèn)為0.0.0.0)

????-p端口偵聽端口(默認(rèn)為11300)

????-u USER成為用戶和組

????-z BYTES設(shè)置最大作業(yè)大小(以字節(jié)為單位)(默認(rèn)值為65535)

????-s BYTES設(shè)置每個(gè)wal文件的大形薄(默認(rèn)為10485760) (將被舍入到512字節(jié)的倍數(shù))

????-c壓縮binlog(默認(rèn))

????- n 不要壓縮binlog

????-v顯示版本信息

????-V增加冗長度

????-h顯示這個(gè)幫助? ??

? ? -l 如果是本機(jī)使用那么就是127.0.0.1?

4.配置文件

/etc/sysconfig/beanstalkd

5.使用PHP操作beanstalkd

????項(xiàng)目地址:https://github.com/pda/pheanstalk/

? ? 下載好如果是TP5的話直接放在根目錄下的extend目錄下就可以了 然后在控制器

? ? 生產(chǎn)者代碼:

????use Pheanstalk\Pheanstalk;

? ??$pheanstalk = Pheanstalk::create('127.0.0.1');

? ??$pheanstalk->useTube($tubeName)->put(json_encode( $jobData),1024,$delay);

? ? useTube() 傳入隊(duì)列名稱

? ? put()

?????第一個(gè)參數(shù)是要存入的信息?

? ? 第二個(gè)參數(shù)是優(yōu)先級(jí)默認(rèn)1024 數(shù)字越小優(yōu)先級(jí)越高

? ? 第三個(gè)參數(shù)是延遲時(shí)間

? ? 第四個(gè)參數(shù)是ttr時(shí)間也就是超時(shí)時(shí)間 (暫無用處)

? ? 消費(fèi)者代碼:

cil模式下 while 不會(huì)超時(shí)

? ??use Pheanstalk\Pheanstalk;

? ??$pheanstalk = Pheanstalk::create('127.0.0.1');

????$tubeName='user_paydingdan_list';

????????while(true){

? ? ????????//獲取隊(duì)列信息,reserve 阻塞獲取

? ????????? $job = $pheanstalk ->watch($tubeName) ->ignore('default') ->reserve();

? ? ? ? ? ? $data = $job->getData();

? ??????????$data = json_decode($data,true);

? ?????????? $pheanstalk->delete($job);

? ? ????}

watch() 監(jiān)聽的管道名稱

reserve() 獲取ready的任務(wù) 阻塞獲取

getData() 得到存入的任務(wù)信息

delete($job) 使用完即可刪除 或其他操作

監(jiān)聽消費(fèi)的進(jìn)程需要安裝supervisor

centos7安裝supervisor詳細(xì)教程:

supervisor:要安裝的軟件的名稱狡耻。

supervisord:裝好supervisor軟件后墩剖,supervisord用于啟動(dòng)supervisor服務(wù)。

supervisorctl:用于管理supervisor配置文件中program夷狰。

使用yum命令安裝(推薦):

# yum install epel-release

# yum install -y supervisor

# systemctl enable supervisord # 開機(jī)自啟動(dòng)

# systemctl start supervisord # 啟動(dòng)supervisord服務(wù)

# systemctl status supervisord # 查看supervisord服務(wù)狀態(tài)

# ps -ef|grep supervisord # 查看是否存在supervisord進(jìn)程

編輯配置文件

隨后我們在supervosprd.d中創(chuàng)建一個(gè)delploy.ini文件并編輯如下

[program:DeployLinux] #DeployLinux 為程序的名稱

command=dotnet DeployLinux.dll #需要執(zhí)行的命令

directory=/home/publish #命令執(zhí)行的目錄

environment=ASPNETCORE__ENVIRONMENT=Production #環(huán)境變量

user=root #用戶

stopsignal=INT

autostart=true #是否自啟動(dòng)

autorestart=true #是否自動(dòng)重啟

startsecs=3 #自動(dòng)重啟時(shí)間間隔(s)

stderr_logfile=/var/log/ossoffical.err.log #錯(cuò)誤日志文件

stdout_logfile=/var/log/ossoffical.out.log #輸出日志文件

然后重啟加載服務(wù)

關(guān)于tp5的cil 命令:

詳情看tp5手冊即可 注意大小也

Pheanstalk 類的用法
https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80466702

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岭皂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沼头,更是在濱河造成了極大的恐慌爷绘,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件进倍,死亡現(xiàn)場離奇詭異土至,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)猾昆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門陶因,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垂蜗,你說我怎么就攤上這事楷扬。” “怎么了贴见?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵烘苹,是天一觀的道長。 經(jīng)常有香客問我蝇刀,道長螟加,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任吞琐,我火速辦了婚禮捆探,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘站粟。我一直安慰自己黍图,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布奴烙。 她就那樣靜靜地躺著助被,像睡著了一般。 火紅的嫁衣襯著肌膚如雪切诀。 梳的紋絲不亂的頭發(fā)上揩环,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音幅虑,去河邊找鬼丰滑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛倒庵,可吹牛的內(nèi)容都是我干的褒墨。 我是一名探鬼主播炫刷,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼郁妈!你這毒婦竟也來了浑玛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤噩咪,失蹤者是張志新(化名)和其女友劉穎顾彰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剧腻,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拘央,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了书在。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灰伟。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖儒旬,靈堂內(nèi)的尸體忽然破棺而出栏账,到底是詐尸還是另有隱情,我是刑警寧澤栈源,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布挡爵,位于F島的核電站,受9級(jí)特大地震影響甚垦,放射性物質(zhì)發(fā)生泄漏茶鹃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一艰亮、第九天 我趴在偏房一處隱蔽的房頂上張望闭翩。 院中可真熱鬧,春花似錦迄埃、人聲如沸疗韵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕉汪。三九已至,卻和暖如春逞怨,著一層夾襖步出監(jiān)牢的瞬間卵酪,已是汗流浹背衩藤。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工揩尸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留界斜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓眯搭,卻偏偏與公主長得像窥翩,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鳞仙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355