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
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《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 年前帖子不知道老哥还看不

1个月前 评论