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 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 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个月前 评论

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