为什么 Laravel 5.8 与数据库驱动程序一起分派像同步一样工作?
Why Laravel 5.8 dispatch with database driver works like sync?
我将 .env
和 config/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');
的结果,它 returns database
。
我运行php artisan queue:work
,但是没有输出。
发送到 SMTP 服务器的电子邮件 sync
驱动程序。
有什么我遗漏的吗?
我的PHP版本是5.6.
这是一个 PHP 版本问题。我将 PHP 升级到 7.1 版并解决了问题。
我将 .env
和 config/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');
的结果,它 returns database
。
我运行php artisan queue:work
,但是没有输出。
发送到 SMTP 服务器的电子邮件 sync
驱动程序。
有什么我遗漏的吗?
我的PHP版本是5.6.
这是一个 PHP 版本问题。我将 PHP 升级到 7.1 版并解决了问题。