我做的是database的队列
网上查下怎么配的很简单,最后加个supervisor就行
https://segmentfault.com/a/11900000105577262.异步队列
1.配置:
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
'failed' => [
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
2.建表
php artisan queue:table 会自动建立jobs表
3.建立失败表 php artisan queue:failed-table
4.自动监听处理队列
php artisan queue:listen windows上,linux上输入这个方法不好:因为占用进程,不好杀
Linux上更多的是使用supervisor自动化监听工具来施行,这我笔记
生产环境最好用 queue:work
效率高
我想 就是 放入队列后 立刻执行 怎么办呢
这个就是监听啊
php artisan queue:listen
就是 我有个任务
我有个队列
放入后 立马执行
问题是,这个杀不死,用supervisor去服务器搭
异步么
supervisor每秒去查是否有需要执行的
就是立马执行的
这个不浪费服务器资源吗
每秒检查?
不就不用 装 supervisor 了
监听你能建日志不,你得知道异步队列是否有问题
而且一般正式环境exec得禁掉吧
多危险
@Richard Lin 那queue:listen也不能用吧,这个我都是测试执行才敢用
Richard Lin(3498471609) 11:02:07
這個就是給你生產環境用的
本地不用listen,直接同步執行
在supervisor可以配日志,我需要知道抛出來執行的有没有问题
我本地是同步的
建議用 horizon
建議用 horizon
@Richard Lin 不 supervisor horizon 可以吗
有没有不用的方法
可以不用。但沒有保證不會意外終止
没有,php artisan 的不安全
@Richard Lin 可以不用 啥意思 ? 就是 使用 php artisan 来监听队列?
@史文仲远 嗯。
好的
但要是有異常就死了@史文仲远
史文仲远(958186957) 11:13:56
今天 理清思路了 @Richard Lin
进程被服务器干掉就没咯哦
反正别用queue:listen就行@史文仲远
可以用
沒有任何問題
嗯 我再问一个问题 用了 redis 是不是 就不需要用 supervisor horizon
就算是supervisor,實際啟動的也是 queue listen
那断了之后手动么
redis 本身是不是有监听的功能?
额....supervisor就是一个监管线程,他不做事情他只保证监管的线程一直存活,死了有策略拉起罢了
@oyo redis 它有这个功能吗
使用了 redis 还需要使用 supervisor 吗
redis只是一个内存数据库
和supervisior不是一个东西哈
不过redis可以做简单的队列是没问题的
我的意思是 装了 redis 是否还要装 supervisor
看你的意思 像是需要 又像是不需要
你撤回了一条消息
他们不是一个东西呢。redis的主要工作是存储,supervisior呢只是一个线程保障。所以你说的需不需要应该要看业务准备怎么实现
IIS里面好像不能配置redis对吧?
不管怎么实现 总得监听队列吧
redis不叫监听,就是跟数据库一样存个数据的,supervisor监听它执行就行了