跳到主要内容

常见问题

关于设置、生成、存储、格式和内存常见问题的简短答案。

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\OptionalDataSpatie\LaravelData\Optional 作为字段值返回。CSV 会保留列并写入空值;对象格式和 XML 会省略该字段。

请参阅可选值

另请参阅