常见问题
关于设置、生成、存储、格式和内存常见问题的简短答案。
Laravel Feeds 能否导出数百万条记录?
可以。软件包分块读取 Eloquent 结果并增量写入输出。让 builder() 保持惰性,不要对完整结果调用 get() 或 toArray(),并在测量内存和数据库负载后调整 chunkSize()。
请参阅大型数据集性能。
应该使用哪种格式?
使用数据使用方要求的契约。XML 和 RSS 支持层级指令,JSON 保留嵌套数据,JSON Lines 适合逐行处理,CSV 则要求稳定的列结构。
请参阅支持的格式。
一个 Feed 能否创建多个文件?
可以,但应根据文件不同的原因选择相应机制:
- 使用
perFile()和可选的maxFiles(),将一个数据集按固定记录数拆分为连续分片。 - 使用 Feed 目标,为每个合作方、商店、语言区域或其他业务键创建独立且经过筛选的输出。
- 如果每个合作方的输出还需要按记录数拆分为多个分片,请结合使用这两种机制。
完整示例请参阅按目标生成多个 Feed 文件的示例。
能否将 Feed 存储在 S3 或其他远程磁盘?
可以,但配置的 Laravel 磁盘必须解析为可写的 FilesystemAdapter。远程移动可能通过复制后删除实现,因此不保证原子替换。
请参阅支持的磁盘。
为什么已禁用的 Feed 仍然运行了?
向 feed:generate 传入 Feed ID 会执行该 Feed,即使其注册记录未启用。不传 ID 运行命令时会跳过未启用的注册记录。
请参阅单个 Feed 生成。
如何省略可选字段?
将 DragonCode\LaravelFeed\Data\OptionalData 或 Spatie\LaravelData\Optional 作为字段值返回。CSV 会保留列并写入空值;对象格式和 XML 会省略该字段。
请参阅可选值。