【发布时间】:2019-06-30 18:21:49
【问题描述】:
我有一个库,可以导入大量图像,我正在尝试使用 Laravel 后台作业。对于排队的作业,我正在关注 Laravel 文档。
首先(创建表):
php artisan queue:table
php artisan migrate
然后在 .env 文件中为 Redis 配置:
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=43216
创建工作:
php artisan make:job CarsJob
汽车工作:
public function handle()
{
$cars = new CarsLibrary();
$CarsLibrary->importAll();
}
在控制器的某个动作中调度作业:
首先我尝试过:
$importCarsJob = (new ImportCarsJob())->onQueue('import_cars');
$this->dispatch($importCarsJob );
第二个我尝试过的:
$importCarsJob = new importCarsJob();
$this->dispatch($importCarsJob);
我已在我的主机中启用 Redis。它是共享主机。
如果我访问该 URL,我会看到该作业不在后台,因为它需要一分钟以上才能完成请求。
编辑:
env 文件在上面,这是config/queue.php:
'connections' => [
'sync' => [
'driver' => 'redis',
],
... other drivers like beanstalkd
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
'block_for' => null,
],
],
- 我在
env文件中没有REDIS_QUEUE。
【问题讨论】: