Laravel-队列

  1. 配置 配置config/queue.php文件:
  2. 创建数据库:
  3. 添加队列任务 通过命令创建任务文件

配置 配置config/queue.php文件:

'default' => 'database'

default的默认配置为sync为同步队列。改为database作为驱动,队列任务将会存放在数据库中,而后我们在后台启动一个后台服务用来监听,这样就做到了异步处理。

创建数据库:

在database/migrations目录中生成一个创建jobs表的配置文件。

php artisan queue:table

(如果你在database/migrations目录中发现已经存在jobs表,那就不需要再执行这一步。)

执行迁移 生成jobs表

php artisan migrate

添加队列任务 通过命令创建任务文件

php artisan make:command SendEmail --queued

执行命令后,你就会发现在app/Commands目录下多出一个SeedEmail.php文件。

namespace App\Commands;
use App\Commands\Command;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldBeQueued;
use Illuminate\Support\Facades\Mail;
class SendEmail extends Command implements SelfHandling, ShouldBeQueued {

    use InteractsWithQueue, SerializesModels;

    public $register;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        //$this->register = $register;
    }

    /**
     * Execute the command.
     *
     * @return void
     */
    public function handle()
    {
        //$register = $this->register;
        //发送邮件
        Mail::send('welcome', [], function($message){
            $message->to('to mail')->subject('邮箱验证');
        });
    }

}

###创建后台监听任务

在windows环境下,不方便创建后台任务,但我们可以使用git-bash后者windows的cmd执行一个任务一直监听这个任务。

php artisan queue:listen

如果在linux下则可以让监听任务在后台运行。

nohup php artisan queue:listen &

如果你觉得马上任务就被执行了,没有体现出异步处理的感觉,你可以添加睡眠时间。

php artisan queue:listen --sleep=10

任务将在10秒后执行


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lzdong@foxmail.com

×

喜欢就点赞,疼爱就打赏