データベースから.csvにデータをエクスポートしようとしています。エクスポートリンクをクリックすると、かなりの量のデータがあると、ブラウザに非常に長い時間保存ウィンドウが表示されません。スクリプトがしばらくぶら下がっていて、かなり長い時間が経ってブラウザにウィンドウを保存できるように見えるのであれば、かなり混乱するかもしれません。 コードは、コントローラにこのようなものです:データをエクスポートすると、ブラウザにブラウザが表示されないのはなぜですか
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
$fileName = $list->list_name . '.csv';
$this->getResponse()->setHeader('Content-Type', 'text/csv; charset=utf-8')
->setHeader('Content-Disposition', 'attachment; filename="'. $fileName . '"');
$contacts = new Contact();
$contacts->export($listId);
Exportメソッドは、レコードを一つずつ読み込み、それをこのような何か出力します:私はwinowはほとんどすぐに表示され、保存いくつかのアプリケーションに表示さ
$fp = fopen('php://output', 'w');
foreach ($mongodbCursor as $subscriber) {
$row = formRow($subscriber);
fputcsv($fp, $row);
}
をし、保存をクリックすると、ダウンロードの進行状況が表示されます。
私は交換してみました:これで
$this->getResponse()->setHeader('Content-Type', 'text/csv; charset=utf-8')
->setHeader('Content-Disposition', 'attachment; filename="'. $fileName . '"');
:
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="'. $fileName . '"');
それは、これまで助けにはなりませんでした。 データベースからすべてのデータが1つずつ読み込まれる前にヘッダーを送信することは可能でしょうか? ありがとうございます。
このようにエクスポートしたファイルの最大サイズはどれですか? – Oleg
私は今あなたを理解していない、どのような輸入ですか?このコードは、同じスクリプトがその上に数行を書き込んだcvsを出力することです。最大ファイルサイズは無制限です(私のケースではデータベースエントリを読み込み、何千ものエントリを一度にエクスポートしても問題はありません)。 – peipst9lker
Pardon、私はエクスポートを意味しました。 – Oleg