laravel 5.5 消息列队使用

假设创建一个项目
queue-demo [自行创建]

配置数据库

项目根目录拷贝cp .env.example .env

vim .env 编辑

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=数据库名
DB_USERNAME=root
DB_PASSWORD=root

1.创建数据库
1.1 php artisan queue:table

创建列队失败表

1.2 php artisan queue:failed-table

2.迁移数(据迁移时由于数据库版本问题报错,标记 #9527 )

php artisan migrate

#数据库会多出一个jobs表 [惊不惊喜,刺不刺激!!!]

3.创建job列队任务控制器

php artisan make:job SendEmail

email = $email;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        /*Mail::raw("队列测试",function(&$meassage){
            $meassage->to($this->email);
        });*/
        
        // 模拟测试
        Log::info("已发送邮件 - ". $this->email);
    }
}

4.创建业务控制器

php artisan make:controller IndexController

/项目/App/Http/Controllers/IndexController.php

6.配置 .env 文件

vim .env

...

QUEUE_DRIVER=database //修改成database

...

 

7.设置访问路由

..../../ routes/web.php

...

Route::get('queue', 'IndexController@queue');

...

8.浏览器访问[本地自行配置域名解析] http://www.demo.queue.cc/queue

检查数据库会多出两条数据[我刷新了两次,测试执行。。。。]

 

9.启动queue监听指令

php artisan queue:listen

命令行显示:

gongsidiannaodeMacBook-Pro:laravel-demo admin$ php artisan queue:listen

[2018-09-18 07:18:11][1] Processing: App\Jobs\SendEmail

[2018-09-18 07:18:11][1] Processed:  App\Jobs\SendEmail

[2018-09-18 07:18:11][2] Processing: App\Jobs\SendEmail

[2018-09-18 07:18:11][2] Processed:  App\Jobs\SendEmail

 

查看执行日志

[2018-09-18 07:18:11] local.INFO: 已发送邮件 - [email protected]  
[2018-09-18 07:18:11] local.INFO: 已发送邮件 - [email protected]  
 

队列执行成功完成后,数据库里的记录自动删除。

 

 

辅助操作 #9527

/项目/App/Providers/AppServiceProvider.php

 

你可能感兴趣的:(php,laravel,5.5,queue,消息队列)