Heim > Backend-Entwicklung > PHP-Tutorial > [ Lumen 5.2 文档 ] 更多特性 -- 队列

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

WBOY
Freigeben: 2016-06-23 13:16:28
Original
972 Leute haben es durchsucht

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']);});
Nach dem Login kopieren

其它队列依赖

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

  • 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()    {        //    }}
Nach dem Login kopieren

2.2 分发任务

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

dispatch(new ExampleJob);
Nach dem Login kopieren

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

Queue::push(new ExampleJob);
Nach dem Login kopieren
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage