介绍:
Beanstalkd,一个高性能、轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook Causes应用。后来开源,现在有PostRank大规模部署和使用,每天处理百万级任务。Beanstalkd是典型的类Memcached设计,协议和使用方式都是同样的风格,所以使用过memcached的用户会觉得Beanstalkd似曾相识。
依赖环境:
>=PHP7.0
>=Centos7.0
最好是宝塔的Lnmp
supervisor 进程管理工具
Pheanstalk PHP简单操作类
安装与使用:
一、安装Beanstalkd
官网地址:
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参数:
/usr/bin/beanstalkd -h
Use:/usr/bin/beanstalkd [OPTIONS]
Options:
-b 开启binlog,断电后重启会自动恢复任务。
-f MS fsync最多每MS毫秒-F从不fsync(默认)
-l ADDR侦听地址(默认为0.0.0.0)
-p端口侦听端口(默认为11300)
-u USER成为用户和组
-z BYTES设置最大作业大小(以字节为单位)(默认值为65535)
-s BYTES设置每个wal文件的大小(默认为10485760) (将被舍入到512字节的倍数)
-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目录下就可以了 然后在控制器
生产者代码:
use Pheanstalk\Pheanstalk;
$pheanstalk = Pheanstalk::create('127.0.0.1');
$pheanstalk->useTube($tubeName)->put(json_encode( $jobData),1024,$delay);
useTube() 传入队列名称
put()
第一个参数是要存入的信息
第二个参数是优先级默认1024 数字越小优先级越高
第三个参数是延迟时间
第四个参数是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() 监听的管道名称
reserve() 获取ready的任务 阻塞获取
getData() 得到存入的任务信息
delete($job) 使用完即可删除 或其他操作
监听消费的进程需要安装supervisor
centos7安装supervisor详细教程:
supervisor:要安装的软件的名称。
supervisord:装好supervisor软件后,supervisord用于启动supervisor服务。
supervisorctl:用于管理supervisor配置文件中program。
使用yum命令安装(推荐):
# yum install epel-release
# yum install -y supervisor
# systemctl enable supervisord # 开机自启动
# systemctl start supervisord # 启动supervisord服务
# systemctl status supervisord # 查看supervisord服务状态
# ps -ef|grep supervisord # 查看是否存在supervisord进程
编辑配置文件
随后我们在supervosprd.d中创建一个delploy.ini文件并编辑如下
[program:DeployLinux] #DeployLinux 为程序的名称
command=dotnet DeployLinux.dll #需要执行的命令
directory=/home/publish #命令执行的目录
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
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 #输出日志文件
然后重启加载服务
关于tp5的cil 命令:
详情看tp5手册即可 注意大小也
Pheanstalk 类的用法
https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80466702