欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

laravel 队列 QQ 网友帮助

image.png


我做的是database的队列


 网上查下怎么配的很简单,最后加个supervisor就行https://segmentfault.com/a/1190000010557726
2.异步队列
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每秒去查是否有需要执行的
就是立马执行的 


  这个不浪费服务器资源吗
   

每秒检查? 

image.png    

不就不用 装 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监听它执行就行了
 
 


普通分类: