laravel 队列job体验

在真正开始看文档学习queue之前,对于队列的印象是这是一个比较难的东西,一时半会儿学不会,是高级程序员处理的东西。

然而在真正接触了之后,却发现并没有想象中那么难以攀登。花了两个小时看英文文档(慢的一匹),然后就可以按部就班的实现一个小的队列任务了。

实现过程如下:

1.数据库建表

php artisan queue:table //队列任务表<br></br>php artisan queue:failed-table //任务执行失败表<br></br>php artisan migrate2.创建job类

php artisan make:job ProcessPodcast3.在job类中,实现逻辑

job主要包括三个函数

  • 构造函数 可选,用来传参
  • handle() 必选,实现队列任务逻辑
  • failed() 可选,当任务失败时执行

4.分发队列任务

ProcessPodcast::dispatch($podcast);对于队列中很常用的一个场景,延迟任务,在laravel中只需调用delay()方法

ProcessPodcast::dispatch($podcast) ->delay(now()->addMinutes(10));5.开启队列进程,执行队列任务

php artisan queue:work这种方式不能关闭teminal,比较不方便。所以一般使用Supervisor。

以上就可以完成一个简单的队列任务。

在laravel中有一个很关键的点:配置为database驱动。

在/config/queue.php中,需要将connections设置为database。而这一配置是从.env文件中获取的

66666.png 将queue_driver配置为database。

配置完成后,本地的环境是搭建好了。问题是如果push到线上,则需要注意,更改线上的.env文件,否则就不会生效。

从这个队列job可以看出,事情之所以觉得难,是因为没有动手去做。每一个复杂的体系,总是由一些简单的步骤拼接而成。在学习新的知识的时候,不用担心太复杂啃不下,一点一点肢解学习,学习便不会困难。 入职3个月以来,从对ubuntu操作系统都没用过到现在可以看文档实现小功能,都是一步一步走出来的,虽然进度不快,但是能感到对于网站开发有了很多的认识。现在再去看一个网站,视角也跟从前不一样,会从功能想到模型,想到数据库有哪些字段,想到要提供什么样的api,我觉得这是一个很好的提升。不足的是还需要投入更多精力,才能更加熟练的开发,现在还基本处于沿着别人的路走,踩别人踩过的坑,熟练起来才能走自己的路。同时也觉得看英文文档的重要性,就laravel框架来说,英文原版的一些内容在中文翻译版中直接减掉了,虽然不是一些主要功能,但是对于开发流畅性还是有一定影响的。再就是原版英文文档的描述更清晰一些,尤其是某些定义、参数的设置,在中文翻译中可能就被省略掉了,这会在开发中埋下雷,早晚会踩。善用google,提升学习效率!

日记本

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

赞赏支持
被以下专题收入,发现更多相似内容