laravel excel 不能完整导出数据

使用 Maatwebsite\Excel 导出数据,由于数据量比较大,现在有2W多条,以后会不断增长。直接导出会报内存溢出。按文档中使用队列方式导出,但是总是只执行一批后队列退出,无法继续导出。
LogExport如下:

namespace App\Exports;

use App\Models\Log;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;

class LogExport implements FromQuery
{
    use Exportable;

    public function query()
    {
        return Log::query();
    }
}

控制器中调用:

    public function export(Request $request)
    {
        (new LogExport)->queue('logs_'.time().'.xlsx')->allOnQueue('exports');
        return back()->withSuccess('Export started!');
    }

队列监听:

laravel excel 不能完整导出数据
调用导出后能正常导出一部分数据,根据导出的数据判断,应该是只执行了第一次分片的1000条数据导出,然后队列就直接被终止了。求教各位大神,这玩意儿要怎么玩才行啊。excel.php里面的配置 driver 设置成了batch,memory_limit设置成6000000,依然还是这个问题。始终无法正常导出。

longren610
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 9

设置一下querySize

 use Maatwebsite\Excel\Concerns\WithCustomQuerySize;

    class ExcelExport implements ...., WithCustomQuerySize

    //......

    public function querySize(): int
    {
        $query = //......

        $size = $query->count();
        return $size;
    }
4年前 评论
longren610

@风吹过有夏天的味道 感谢回复。加上querySize以后,队列倒是能正常跑完了。但是生成的excel文件里面就只有1000条数据。 :joy: 请问是哪点有问题么。。。

    public function querySize(): int
    {
        return 1000;
    }
4年前 评论
风吹过有夏天的味道 4年前
longren610 (作者) (楼主) 4年前
风吹过有夏天的味道 4年前
longren610 (作者) (楼主) 4年前

方便装扩展的话,可以用xlswriter试试,xlswriter-docs.viest.me/

4年前 评论
longren610 (楼主) 4年前

这个问题是怎么解决了老哥,遇到同样的问题,4年前帖子不知道老哥还看不

2个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!