CSVデータをREST APIにアップロードしたい(特定のenpointのCSVデータのみを除いて)。Guzzでチャンク付きのCSVデータを送信
CSVデータのソースは、ユーザーによるアップロードです。アップロードされた形式は、CVS、ODS、またはXLSXのスプレッドシートデータのいずれかです。
ユーザーがCSVファイルをアップロード - 私は(簡体字)ん:
$handle = \fopen($tempFile, 'r');
$client->post('/import', ['body' => $handle]);
これは動作し、TODOが容易です。しかし、ユーザーがXLSXをアップロードすると、最初のシートの行をループし、fputcsvでリソースを作成します。
use Box\Spout\Reader\ReaderFactory;
$reader = ReaderFactory::create('xlsx');
$reader->open($tempFile);
$handle = \fopen('php://temp', 'r+');
/** @var $reader \Box\Spout\Reader\XLSX\Reader */
foreach ($reader->getSheetIterator() as $sheet) {
/** @var $sheet \Box\Spout\Reader\XLSX\Sheet */
foreach ($sheet->getRowIterator() as $row) {
\fputcsv($handle, $row);
}
break;
}
$reader->close();
$client->post('/import', ['body' => $handle]);
私は、メモリ消費量とパフォーマンスに関する手順(XLSXインポート)を最適化する方法を探しています。
最初にfputcsvで完全なリソースを作成しなくても、グーグルがチャンクリクエストとしてforeach ($sheet->getRowIterator() as $row)
内からリクエストを送信することは可能ですか?私はこれが理にかなってほしい。多分これさえGuzzleHttpドキュメントにしたがって
これはGuzzle 6の場合ですか? – DaSourcerer
はい - Guzzle 6! – madflow