在 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,它将在将作业推送到队列时存储数据。
我正尝试在返回 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,它将在将作业推送到队列时存储数据。