介紹:
Beanstalkd,一個高性能、輕量級的分布式內(nèi)存隊列系統(tǒng),最初設(shè)計的目的是想通過后臺異步執(zhí)行耗時的任務(wù)來降低高容量Web應(yīng)用系統(tǒng)的頁面訪問延遲,支持過有9.5 million用戶的Facebook Causes應(yīng)用。后來開源,現(xiàn)在有PostRank大規(guī)模部署和使用,每天處理百萬級任務(wù)。Beanstalkd是典型的類Memcached設(shè)計,協(xié)議和使用方式都是同樣的風格,所以使用過memcached的用戶會覺得Beanstalkd似曾相識。
依賴環(huán)境:
>=PHP7.0??
>=Centos7.0?
最好是寶塔的Lnmp
supervisor 進程管理工具
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.啟動:
????/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,斷電后重啟會自動恢復任務(wù)。
????-f MS fsync最多每MS毫秒-F從不fsync(默認)
????-l ADDR偵聽地址(默認為0.0.0.0)
????-p端口偵聽端口(默認為11300)
????-u USER成為用戶和組
????-z BYTES設(shè)置最大作業(yè)大小(以字節(jié)為單位)(默認值為65535)
????-s BYTES設(shè)置每個wal文件的大?。J為10485760) (將被舍入到512字節(jié)的倍數(shù))
????-c壓縮binlog(默認)
????- n 不要壓縮binlog
????-v顯示版本信息
????-V增加冗長度
????-h顯示這個幫助? ??
? ? -l 如果是本機使用那么就是127.0.0.1?
4.配置文件
/etc/sysconfig/beanstalkd
5.使用PHP操作beanstalkd
????項目地址: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() 傳入隊列名稱
? ? put()
?????第一個參數(shù)是要存入的信息?
? ? 第二個參數(shù)是優(yōu)先級默認1024 數(shù)字越小優(yōu)先級越高
? ? 第三個參數(shù)是延遲時間
? ? 第四個參數(shù)是ttr時間也就是超時時間 (暫無用處)
? ? 消費者代碼:
cil模式下 while 不會超時
? ??use Pheanstalk\Pheanstalk;
? ??$pheanstalk = Pheanstalk::create('127.0.0.1');
????$tubeName='user_paydingdan_list';
????????while(true){
? ? ????????//獲取隊列信息,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)聽消費的進程需要安裝supervisor
centos7安裝supervisor詳細教程:
supervisor:要安裝的軟件的名稱。
supervisord:裝好supervisor軟件后,supervisord用于啟動supervisor服務(wù)。
supervisorctl:用于管理supervisor配置文件中program。
使用yum命令安裝(推薦):
# yum install epel-release
# yum install -y supervisor
# systemctl enable supervisord # 開機自啟動
# systemctl start supervisord # 啟動supervisord服務(wù)
# systemctl status supervisord # 查看supervisord服務(wù)狀態(tài)
# ps -ef|grep supervisord # 查看是否存在supervisord進程
編輯配置文件
隨后我們在supervosprd.d中創(chuàng)建一個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 #是否自啟動
autorestart=true #是否自動重啟
startsecs=3 #自動重啟時間間隔(s)
stderr_logfile=/var/log/ossoffical.err.log #錯誤日志文件
stdout_logfile=/var/log/ossoffical.out.log #輸出日志文件
然后重啟加載服務(wù)
關(guān)于tp5的cil 命令:
詳情看tp5手冊即可 注意大小也
Pheanstalk 類的用法
https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80466702