在Laravel 5中设置队列

Str*_*amp 8 php queue laravel laravel-5

我试图在返回HTTP响应后运行代码.我知道Laravel 5支持队列,但我仍然觉得它们令人困惑.我试图在用户注册后运行代码,需要用户的密码和用户名.这个答案似乎很有趣,但不能直接适用于Laravel.

  • 如何在队列中创建作业?
  • 如何将数据传递给新作业?

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

Bog*_*dan 10

作为第一步,设置队列需要选择您将使用的驱动程序.因为它是最快的运行,我将解释如何开始使用database驱动程序,因为它不需要在服务器上安装任何其他服务(例如,就像这样beanstalkd).以下是如何设置此设置:

1.QUEUE_DRIVER在您的.env文件中设置:

QUEUE_DRIVER=database
Run Code Online (Sandbox Code Playgroud)

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

php artisan queue:table
Run Code Online (Sandbox Code Playgroud)

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

php artisan migrate
Run Code Online (Sandbox Code Playgroud)

jobs创建了一个表,用于在将作业推送到队列时存储数据.


您可以将命令和clojures推送到队列中.为简洁起见,我将展示如何将闭包推送到队列的示例:

$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();
});
Run Code Online (Sandbox Code Playgroud)

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

php artisan queue:listen
Run Code Online (Sandbox Code Playgroud)

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