laravel使用队列的简单步骤

2018-08-28 10:00:24

最近需要导入大量的excel文件,数量达到十万之多。

而我又不想修改服务器的超时时间,因为这样可能影响服务器的堵塞。


而php又没有很好的异步。


后来发现了令laravel最为骄傲的部分,队列。具体文档参考下方链接。


laravel队列介绍


简单操作如下:

Laravel5提供了完善的队列功能,只需要简单的配置即可使用。这里简单记录下关于异步队列的用法。 配置 关于队列的定义,这里就不作介绍了。我们要使用异步队列就有两个关键:

     1.存储队列的地方

     2.执行任务的服务 。

打开 config/queue.php,这是Laravel5关于队列的配置文件。首先我们可以通过 default参数指定默认队列驱动,默认配置是 sync, 这是同步队列,我们要做异步队列首先就要改变这里。

假设我们用 database作为驱动,队列任务将会存放在数据库中,而我们后面会另外启动一个后台服务来处理队列任务,这就是异步方式了。 'default' => 'database' 修改完配置后,我们需要创建一个表来存放队列任务,Laravel5已经在自带artisan命令中内置了一个指令用来生成数据迁移,只需要两条命令即可,当然你得实现配置好数据库连接。

 php artisan queue:table  php artisan migrate 这样就自动在数据库中创建了 jobs 表。 


启动队列监听服务 通过下面这条指令启动队列监听服务,它会自动处理 jobs 表中的队列任务: php artisan queue:work

在linux中,如果想让它在后台执行,可以这样: nohup php artisan queue:listen & 添加队列任务 关于队列任务的添加,手册里说的比较详细,这里就简单举个例子吧。 首先,通过artisan创建一个队列命令: php artisan make:command SendEmail --queued 这样会生成 app/Commands/SendEmail.php这个类文件,这个类会被标识为队列命令,你可以在 handle方法中写自己的业务逻辑。 在控制器中,可以简单通过 Bus::dispatch分发任务: Bus::dispatch(new /App/Commands/SendEmail()); 你会发现任务不会立即执行,而是被放到 jobs 表中,由队列监听服务处理。 更详细的用法建议参考 command bus 和 queue 相关的手册章节。 


因为 php artisan queue:work 不是守候进程,我们采用

再linux我们采用supervisor 来进行我们的守候进程。具体supervisor的配置,我laravel队列supervisor的配置参考下一篇文章。

  • 2020-01-17 21:20:06

    Nuxt重要点介绍和记录

    nuxt.js简单的说是Vue.js的通用框架,最常用的就是用来作SSR(服务器端渲染).Vue.js是开发SPA(单页应用)的,Nuxt.js这个框架,用Vue开发多页应用,并在服务端完成渲染,可以直接用命令把我们制作的vue项目生成为静态html。

  • 2020-01-17 21:21:42

    nuxtjs打包优化

    然后你再使用 npm run build 打包的时候,会弹出一个界面 当然了,它第一次出来的时候我立马关了,这啥玩意???别着急你慢慢的品,慢慢的看。 原来 这是打包后的JS,面积的大小就是体积的大小。这样我们一目了然的看到了到底那里大了

  • 2020-01-17 23:21:54

    webpack打包优化之外部扩展externals的实际应用

    使用vue-cli创建项目,使用webpack打包。其中,有一个webpack优化webpack.optimize.CommonsChunkPlugin,它会将node_modules中的必需模块提取到vendor文件中,项目开发中,增加第三方模块,比如element-ui、vue-echarts等,vendor的包都会增大。这个时候,就需要考虑减轻vendor包的大小,增加构建速度。我们可以使用webpack的外部扩展(externals)功能。

  • 2020-01-18 01:26:59

    anyProxy使用注意事项

    anyproxy-ca 运行这个命令,如果是mac电脑他会提醒你去通过证书。

  • 2020-01-18 08:54:06

    利用localStorage来处理你的Javascript脚本错误

    localStorage作为HTML5中的新特性,它的出现可以说对于前端性能体验来讲可以获得相当大的改善。存储一些用户经常用到而又不是涉及隐私和安全的东西,的确是一个非常好的选择。下面分享一下用localStorage来处理客户端代码错误的例子来了解一下它的用途吧。