首先执行启动命令要找到当前项目的根目录,我们安装后的php项目根目录在crmeb
目录下有think
文件
命令
work模式 queue:work
列名的可以去队列配置中查看
php think queue:work --queue 消息队列列名
参数说明
--daemon
是否循环执行,如果不加该参数则该命令处理完下一个消息就退出
--queue 消息队列列名
要处理的队列的名称
--delay 0
如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0
--force
系统处于维护状态时,是否仍然处理任务,并未找到相关说明
-memory 128
该进程允许使用的内存上限,以M为单位
--sleep 3
如果队列中无任务则sleep多少秒后重新检查
--tries 2
如果任务已经超过尝试次数上限,则触发“任务尝试数超限”事件,默认为0
Listen模式 queue:listen
php think queue:listen --queue 消息队列列名
参数说明
--queue 消息队列列名
要处理的队列的名称
--delay 0
如果本次任务执行抛出异常且任务未被删除时,设置其下次执行前延迟多少秒,默认为0
--sleep 3
如果队列中无任务则sleep多少秒后重新检查
--tries 2
如果任务已经超过尝试次数上限,则触发“任务尝试数超限”事件,默认为0
--timeout 60
工作进程允许执行的最长时间,以秒为单位
两种模式下选择那种模式运行比较好?
Work模式是单进程的处理模式,按照是否设置—daemon参数又可以分为单次执行和循环执行两种模式;
Listen命令是“双进程+管道”的处理模式,Listen命令所在的进程会循环地创建单次执行模式的Work进程,每次创建的Work进程只消费一个消息就会结束,然后Listen进程再创建一个新的Work进程;
Work模式本质上既不能控制进程自身的运行时间;如果在列中增加死循环那么循环不会停止
Listen命令可以限制Listen进程创建的Work进程的最大执行时间;
综合考虑,选择listen
模式比较好
项目中启动消息队列
php think queue:listen --queue 消息队列列名
配合Supervisor进行进程守护
Was this helpful?
0 / 0