在 Laravel 5 中设置队列

Setting up queue in Laravel 5

我正尝试在返回 HTTP 响应后 运行 编码。我知道 Laravel 5 支持 queues, but I still find them confusing. I am trying to run code after the user has registered which requires the user's password and username. This answer 看起来很有趣,但并不直接适用于 Laravel。

我知道这听起来很懒,但我真的不明白文档。

作为第一步,设置队列需要选择您将使用的驱动程序。因为它是最快获得 运行ning 的,所以我将解释如何从 database 驱动程序开始,因为它不需要在服务器上安装任何其他服务(对于beanstalkd 例如)。设置方法如下:

1..env 文件中设置 QUEUE_DRIVER

QUEUE_DRIVER=database

2. 运行 此命令生成 jobs table 的迁移文件,用于存储作业信息:

php artisan queue:table

3. 现在 运行 迁移以创建 table:

php artisan migrate

创建了一个 jobs table,它将在将作业推送到队列时存储数据。


您可以将命令和 clojure 推送到队列中。为了简洁起见,我将展示一个如何将闭包推入队列的示例:

$username = Request::input('username');
$password = Request::input('password');

// Do your registration stuff

// Push a job onto the queue
\Queue::push(function($job) use ($username, $password)
{
    // Do the stuff you need here with $username and $password

    // Delete the job from the queue
    $job->delete();
});

完成这项工作的最后一步是 运行 队列侦听器。除非队列侦听器为 运行ning,否则不会自动处理作业。所以 运行 这个命令:

php artisan queue:listen

您可以采取进一步的步骤,例如设置 Supervisor 以监视并在队列侦听器崩溃时重新启动它,但这应该足以让您入门。

一般我们在队列上传递数据是这样的-

我们在控制器上写了-

$this->dispatch(new videoToAudioConvert($video_id))

求职部分要这样写-

protected $video_id

public function __contructor($video_id){
  $this->video_id = $video_id
}

public function handle(){
  $this->video_id
}

您可以进一步了解如何在队列中创建作业以及如何从 here 传递变量。

要存储在作业中的需求数据是什么table 我用它来发送带队列的电子邮件,我会安排它 我做了前 3 个步骤。 在您的 .env 文件中设置 QUEUE_DRIVER:

QUEUE_DRIVER=数据库 2. 运行 此命令为作业 table 生成迁移文件,将用于存储作业信息:

php artisan queue:table 3. 现在 运行 迁移以创建 table:

php artisan 迁移 创建了一个作业 table,它将在将作业推送到队列时存储数据。