>백엔드 개발 >PHP 튜토리얼 >[ Lumen 5.2 文档 ] 更多特性 -- 队列

[ Lumen 5.2 文档 ] 更多特性 -- 队列

WBOY
WBOY원래의
2016-06-23 13:16:28966검색

1、简介

Lumen队列服务为各种不同的后台队列驱动提供了统一的API。队列允许你延迟耗时任务(例如发送邮件)的执行,从而大幅提高web请求的响应速度。

1.1 配置

队列配置选项位于 .env文件。

1.2 队列驱动预备知识

数据库

要使用 database作为队列驱动,需要一张数据库表来存放任务:

Schema::create('jobs', function (Blueprint $table) {    $table->bigIncrements('id');    $table->string('queue');    $table->longText('payload');    $table->tinyInteger('attempts')->unsigned();    $table->tinyInteger('reserved')->unsigned();    $table->unsignedInteger('reserved_at')->nullable();    $table->unsignedInteger('available_at');    $table->unsignedInteger('created_at');    $table->index(['queue', 'reserved', 'reserved_at']);});

其它队列依赖

下面是以上列出队列驱动需要安装的依赖:

  • Amazon SQS:  aws/aws-sdk-php ~3.0
  • Beanstalkd:  pda/pheanstalk ~3.0
  • Redis:  predis/predis ~1.0

2、和Laravel的不同之处

和框架许多其它功能一样,Lumen的队列任务方法依赖于Laravel队列任务,因此,要了解Lumen队列任务的更多细节,可查看 完整的Laravel队列文档。

但是,Lumen和Laravel的队列实现也有少许不同支持,下面我们就来讨论这些区别。首先我们来看队列任务的生成。

2.1 生成器

Lumen并没有内置自动创建新的任务类,取而代之的,你需要拷贝框架内置的 ExampleJob类,这个类提供了每个队列任务都共享的基本类结构, ExampleJob继承的基类 Job已经包含了 InteractsWithQueue,  Queueable和 SerializesModels这些trait:

<?phpnamespace App\Jobs;class ExampleJob extends Job{    /**     * Create a new job instance.     *     * @return void     */    public function __construct()    {        //    }    /**     * Execute the job.     *     * @return void     */    public function handle()    {        //    }}

2.2 分发任务

再次重申,关于分发队列任务的完整信息请参考Laravel队列文档,和Laravel框架一样,你可以使用 dispatch方法从Lumen应用的任何地方分发任务:

dispatch(new ExampleJob);

当然,你还可以使用 Queue门面,如果你选择使用这个门面,需要取消文件 bootstrap/app.php中 $app->withFacades()前面的注释:

Queue::push(new ExampleJob);
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:图片显示问题다음 기사:微信开发的对象问题