介紹:
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