为什么带有数据库驱动程序的Laravel 5.8调度像同步一样工作?

时间:2019-04-25 15:02:16

标签: php laravel php-5.6 laravel-5.8 laravel-queue

我将.envconfig/queue.php中的队列驱动程序从sync更改为database。然后我跑了php artisan cache:clear

我用命令php artisan make:job SendEmailJob

创建了一个新作业。
<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

use App\Mail\SendEmailMailable;
use Illuminate\Support\Facades\Mail;

class SendEmailJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        Mail::to('hello@example.com')->send(new SendEmailMailable());
    }
}

然后我在routes\web.php

中写了这条路线
use App\Jobs\SendEmailJob;
use Carbon\Carbon;
use Illuminate\Bus\Dispatcher;

Route::get('sendEmail', function(){
    $job = (new SendEmailJob())->delay(Carbon::now()->addSeconds(5));
    dispatch($job);
    return 'Email is sent properly';
});

我停止了php artisan serve,重新开始了。

我弄乱了env('QUEUE_DRIVER', 'database');的结果,它返回了database

我运行了php artisan queue:work,但是没有输出。 发送到SMTP服务器的电子邮件,例如sync驱动程序。

有什么我想念的吗?

我的PHP版本是 5.6

1 个答案:

答案 0 :(得分:0)

这是一个PHP版本问题。我将PHP升级到7.1版,并解决了问题。