【发布时间】:2019-03-19 16:39:09
【问题描述】:
您好,我正在尝试使用 laravel 队列导出 excel 文件。我已经集成了 maatwebsite。
这是我到目前为止所做的
控制器
public function export()
{
$this->dispatch(new ExportDistributorJob([]));
Session::flash('success','Data is being exported to excel file.');
return redirect()->back();
}
工作
<?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\Model\Products;
use Excel;
class ExportDistributorJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct(array $request)
{
$this->queue = 'default';
$this->data = $request;
}
public function handle()
{
$data = array(
'Name' => 'John',
'City' => 'Washington'
);
return Excel::create('invoice', function($excel) use ($data) {
$excel->sheet('mySheet', function($sheet) use ($data)
{
$sheet->fromArray($data);
});
})->download('xlsx');
}
}
?>
当我执行程序时。它将数据存储在作业表中,然后尝试执行 3 次
MaxAttemptsExceededException 错误。
我无法使用队列将数据导出到 excel 文件。
QUEUE_DRIVER=database
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
您的作业正在生成错误,3 次后它将失败。在此处阅读laravel-excel.maatwebsite.nl/3.1/exports/collection.html,您可以查看如何导出集合。也可以使用excel队列laravel-excel.maatwebsite.nl/3.1/exports/queued.html
-
@ThijsBouwes 它尝试执行 3 次,但为什么不将数据导出到 csv?如果我将 QUEUE_DRIVER 更改为同步,则效果很好。
-
能否提供日志或异常?
-
3 次执行后日志显示错误 - App\Jobs\ExportDistributorJob 尝试次数过多或运行时间过长。该作业之前可能已超时。
-
使用的是什么版本的包?
标签: php laravel queue jobs maatwebsite-excel