【发布时间】:2018-10-16 09:56:56
【问题描述】:
我正在使用 PHP League CSV importer/exporter 在 Laravel 中导入一个大型 CSV 文件。由于文件很大,我想将它流式传输到 CSV 解析器并一次处理一行,而不是将每一行都加载到内存中。
Laravel 使用 flysystem 作为底层文件系统,我正在使用它来获取源 CSV 的 PHP 资源。
我不明白的是,如果可能的话,我如何将该资源流输入到 League CSV,以便它一次读取一行供我处理,然后再读取下一行。所有文档似乎都暗示 CSV 文件总是被完全读入内存,这是我想要避免的。
我需要使用回调吗?如果是这样,我如何确定流资源只根据需要一次读取一行,而不是一次读取?
我猜我是从创建流阅读器开始的?
use League\Csv\Reader;
$reader = Reader::createFromStream($resource, 'r');
【问题讨论】:
标签: php laravel csv composer-php flysystem